我正在开发一个项目,我使用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;
}
}
});
答案 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()
方法。