java无法删除文件,被另一个进程使用
我有这个代码
import org.apache.commons.io.FileUtils; try {
FileUtils.copyURLToFile(new URL(SHA1_LINK), new File("SHA1.txt"));
if(!sameSha1()) {
System.out.println("sha diferentes");
FileUtils.copyURLToFile(new URL(LINK), new File(PROG));
}
} catch (Exception e) {
System.out.println("Internet is off");
}
//delete SHA1 file
Files.deleteIfExists(Paths.get("SHA1.txt"));
当我执行它时,它说
java.nio.file.FileSystemException
该进程无法访问文件,因为该文件正在被另一个进程使用(在sun.nio.fs.WindowsException中)
在sameSha1()
我有这个:
String sha1Txt = new Scanner(new File("SHA1.txt")).useDelimiter("\\Z").next();
我想删除文件“ SHA1.txt”。我怎样才能做到这一点?
回答:
我猜想sameSha1
您打开SHA1.txt
阅读它,而您却忘了关闭它。
编辑:
根据您的评论,您在中包含以下行sameSha1
:
String sha1Txt = new Scanner(new File("SHA1.txt")).useDelimiter("\\Z").next();
因此,您创建了一个扫描程序实例,但没有明确关闭它。您应该这样做:
Scanner s = new Scanner(new File("SHA1.txt"));try {
String sha1Txt = s.useDelimiter("\\Z").next();
...
return result;
}
finally {
s.close();
}
或就像@HuStmpHrrr在Java 7中建议的那样:
try(Scanner s = new Scanner(new File("SHA1.txt"))) { String sha1Txt = s.useDelimiter("\\Z").next();
...
return result;
}
以上是 java无法删除文件,被另一个进程使用 的全部内容, 来源链接: utcz.com/qa/428285.html