2017-09-08 95 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); 
    } 
    
相关问题