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

回到顶部