【已解決】源文件名長度大於系統支持的長度問題

無聊中,想寫個.Java文件爲後綴名的編碼格式轉換器,用途:如果從網絡下載下來的源碼,或者同事給你他寫好的代碼,Copy到Eclipse工程中出現亂碼的問題,這是Eclipse就會報錯,當你打開報錯的指定文件代碼,裏面凡出現中文的地方就會出現亂碼,當我們查看文件的編碼方式,它是utf-8,我們需要將它改成ANSI,如果項目中的類非常的多,一個個用記事本打開源文件,點擊文件,另存爲命令,“編碼”改爲ANSI,這樣就會很繁瑣,降低工作的效率。哈哈,說來也挺好笑的,沒想到在寫這個程序的過程中用到對文件的操作,調試時打開目標文件夾,該文件夾出現無限循環地創建子文件夾,直到創建Window所支持的最大的限度,想將其刪除掉,但是刪除不了。遇到這種問題,第一時間上Google搜索,答案不是令人很滿意,想放在一邊,先不管它,後來,想了想,既然用程序可以創建文件夾,刪除文件夾也可以吧,想到這就去寫了一個刪除文件夾的java類。代碼如下:

    package com.treasure.test;  
      
    import java.io.File;  
      
    /** 
     * 解決無限創建的子文件夾刪除不了的問題 
     * @author Treasure 
     * 
     */  
    public class ForeverDelete   
    {  
        //刪除文件夾方法  
        private void deleteDir(File file)   
        {  
            if (file.listFiles().length == 0)  
                file.getAbsoluteFile().delete();  
        }  
        //刪除文件方法  
        public void deleteFile(File file)   
        {  
            File[] temp = file.listFiles();  
            for (int i = 0; i < temp.length; i++)   
            {  
                System.out.println(temp[i].getName());  
                if (temp[i].isDirectory())   
                {  
                    if (temp[i].listFiles().length != 0)  
                        this.deleteFile(temp[i]); //如果 文件夾裏不爲空 遞歸調用 方法  
                        this.deleteDir(temp[i]);  
                }   
                else   
                {  
                    temp[i].delete();  
                }  
            }  
        }  
          
        public static void main(String[] args)   
        {  
            ForeverDelete m = new ForeverDelete();  
            m.deleteFile(new File("H:\\tmp\\hello"));  
        }  
    }  

  注意:這個我自己測試過,絕對可行,運行該項目,如果沒有將文件夾裏的所有子文件夾刪除,那麼就多執行一行,我總共執行了兩次,纔將該文件夾中無限循環的子文件夾全部刪除。

        總結:編程有好幾年了,第一次遇到這種問題,呵呵,出現問題不可怕,關鍵在於自己想不想解決此問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章