2012-06-27 81 views
-2

我需要刪除的文件夾是從我的程序創建的文件夾。該目錄是不是在每臺PC機一樣的,所以我使用的文件夾代碼是在java中刪除文件夾

userprofile+"\\Downloads\\Software_Tokens" 

會有在文件中,所以我想我需要遞歸刪除。我在這裏看了一些樣品,但它從不接受我的道路。路徑中的代碼作爲一個環境變量工作正常,因爲我對添加的代碼它

static String userprofile = System.getenv("USERPROFILE");

所以有人可以只顯示我與我的路徑代碼插入好嗎?

+2

考慮使用File.separator而不是「\\」或「/」字符 – greuze

+0

userprofile變量的值是什麼?你可以嘗試打印'userprofile +「\\ Downloads \\ Software_Tokens」'並查看它是否導致有效路徑? – npinti

回答

0

如果你不想使用apache庫!你可以遞歸地做到這一點。

String directory = userprofile + File.separator + "Downloads" + File.separator + "Software_Tokens"; 
    if (!directory.exists()) { 
     System.out.println("Directory does not exist."); 
     System.exit(0); 
    } else { 
     try { 
      delete(directory); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      System.exit(0); 
     } 
    } 
    System.out.println("Done"); 
    } 
    public static void delete(File file) 
    throws IOException { 
     if (file.isDirectory()) { 
      //directory is empty, then delete it 
      if (file.list().length == 0) { 
       file.delete(); 
       System.out.println("Directory is deleted : " + file.getAbsolutePath()); 
      } else { 
       //list all the directory contents 
       String files[] = file.list(); 
       for (String temp: files) { 
        //construct the file structure 
        File fileDelete = new File(file, temp); 

        //recursive delete 
        delete(fileDelete); 
       } 
       //check the directory again, if empty then delete it 
       if (file.list().length == 0) { 
        file.delete(); 
        System.out.println("Directory is deleted : " + file.getAbsolutePath()); 
       } 
      } 
     } else { 
      //if file, then delete it 
      file.delete(); 
      System.out.println("File is deleted : " + file.getAbsolutePath()); 
     } 
+1

當文件夾不爲空時,這將不起作用! – GETah

+0

@GETah是的..我意識到這個錯誤,我編輯了答案。謝謝無論如何。 –

+0

我覺得使用過度測試的API絕對是一個比您的解決方案更好的選擇,它可能會隱藏比已經發現的錯誤更多的錯誤;-) –

1

如果您的目錄不爲空,你可以使用Apache Commons IO API的方法deleteDirectory(File file)

String toDelete = userprofile + File.separator + "Downloads" + 
     File.separator + "Software_Tokens"; 
FileUtils.deleteDirectory(new File(toDelete)); 

小心與/\是依賴於系統和使用File.separator代替。