2017-09-08 120 views
2

我'嘗試將文件複製到一個目錄,然後將其刪除,但file.delete()保留返回falsefile.delete()返回false,即使文件可寫

這裏是我的代碼:

for (File file : list) { 
      if (!file.isDirectory()) { 
       try { 
        FileUtils.copyFileToDirectory(file, path); 
        file.setWritable(true);       
        System.out.println(file.delete()); 
        if(file.exists()){ 
         file.deleteOnExit(); 
        } 
       } catch (IOException e) { 
        System.out.println(e); 
       } 
      } 
     } 
+2

注意,你必須爲了'file.setWritable(真)適當的權限;'工作。可能您的用戶沒有權限刪除該文件。 – BackSlash

+0

然後,我該怎麼辦? –

+2

與有權刪除文件的用戶執行程序 – BackSlash

回答

1

很少有創意可以解決。

  • 如果要先刪除文件,請關閉所有連接和流。之後刪除文件
  • 請確保您具有文件的刪除權限
  • 請確保您位於正確的目錄中。如果刪除不起作用,請嘗試使用絕對路徑刪除文件。該文件的路徑可能不正確。
  • 使用Files.delete。刪除(Path)方法刪除文件或拋出異常,如果刪除失敗。例如,如果該文件不存在,則拋出NoSuchFileException。您可以捕獲該異常來確定如下爲什麼刪除失敗:見甲骨文文檔here

    try { 
        Files.delete(path); 
    } catch (NoSuchFileException x) { 
        System.err.format("%s: no such" + " file or directory%n", path); 
    } catch (DirectoryNotEmptyException x) { 
        System.err.format("%s not empty%n", path); 
    } catch (IOException x) { 
        // File permission problems are caught here. 
        System.err.println(x); 
    } 
    
相關問題