2012-07-26 79 views
0

我正在使用java.nio.*进行文件操作。基本上我的产品正在使用Java 7使用Java 7删除文件

Files.createFile(path)//For creating file. 

服务器现在我创建服务器上的文件但是,当我想用​​

Files.delete(path) 

它给我留言删除它

The process cannot access the file because it is being used by another process.** 

删除文件代码....

Files.walkFileTree(start, new SimpleFileVisitor<Path>() { 
      @Override 
      public FileVisitResult visitFile(Path file, 
        BasicFileAttributes attrs) throws IOException { 

       Files.delete(file); 
       return FileVisitResult.CONTINUE; 
      } 

      @Override 
      public FileVisitResult postVisitDirectory(Path dir, IOException e) 
        throws IOException { 
       if (e == null) { 
        Files.delete(dir); 
        return FileVisitResult.CONTINUE; 
       } else { 
        // directory iteration failed 
        throw e; 
       } 
      } 

     }); 
+0

[Java 7:Path vs File]的可能重复(http://stackoverflow.com/questions/6903335/java-7-path-vs-file) – 2012-07-26 13:11:42

+0

您可能在某处写入文件后将其保持为打开状态在你的代码中。请记住始终关闭文件/流/等。在你完成之后。 Java 7提供了一个称为'试用资源'的整洁机制,为您提供帮助:http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html 恐怕没有什么可以做的了说,除非你提供更多的信息。 – toniedzwiedz 2012-07-26 13:13:33

回答

4

您无法删除已被您的进程或其他进程锁定的文件。在Windows上,默认情况下文件被锁定,在Linux上它们必须被明确地锁定。

这个例子

Path path = FileSystems.getDefault().getPath("test.log"); 
Path file = Files.createFile(path); 
Files.delete(file); 

跑带出错误

0

要删除一个文件,你必须获得该文件处理程序(通常通过创建它的线程拥有)。因此,如果一个线程创建了一个文件,另一个线程CAN NOT将其删除。

确保在删除文件时服务器没有创建另一个线程,这是每个服务器代码上发生的情况。

PS:如果你想要更多更好的答案,你将不得不提供更多信息

+0

这是我的代码来删除文件或目录 – 2012-07-26 13:15:31

0

你关闭所有的作家使用的参考给定的文件?

0

如果您使用摆动组件打开文件,则可以使用该组件的dispose()方法打开文件。