当前位置:   article > 正文

Java删除 正在使用,java无法删除另一个进程正在使用的文件

java the process cannot access the file because it is being used by another

I have this code

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"));

and when I execute it it says

java.nio.file.FileSystemException

The process cannot access the file because it is being used by another process (in sun.nio.fs.WindowsException)

In the sameSha1() I have this:

String sha1Txt = new Scanner(new File("SHA1.txt")).useDelimiter("\\Z").next();

I want to delete the file 'SHA1.txt'. How can I do this?

解决方案

I guess with sameSha1 you open SHA1.txt to read it and you forget to close it.

EDIT:

From your comment you contain the following line in sameSha1:

String sha1Txt = new Scanner(new File("SHA1.txt")).useDelimiter("\\Z").next();

So you create a scanner instance but you don't explicitly close it. You should do something like that:

Scanner s = new Scanner(new File("SHA1.txt"));

try {

String sha1Txt = s.useDelimiter("\\Z").next();

...

return result;

}

finally {

s.close();

}

Or as @HuStmpHrrr suggests in Java 7:

try(Scanner s = new Scanner(new File("SHA1.txt"))) {

String sha1Txt = s.useDelimiter("\\Z").next();

...

return result;

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/215997
推荐阅读
相关标签
  

闽ICP备14008679号