使用Java 7删除文件

时间:2012-07-26 13:09:10

标签: java java-7

我正在开发一个项目,我使用java.nio.*进行文件操作。基本上我的产品现在在服务器上工作我正在使用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;
                }
            }

        });

4 个答案:

答案 0 :(得分:4)

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

这个例子

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

运行时没有错误

答案 1 :(得分:0)

要删除文件,您必须获取文件处理程序(通常由创建它的线程拥有)。因此,如果一个线程创建了一个文件,另一个线程不能删除它。

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

PS:如果您想要更多更好的答案,则必须提供更多信息

答案 2 :(得分:0)

你是否关闭了所有使用对给定文件的引用的作者?

答案 3 :(得分:0)

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