当前位置: 首页 > 面试题库 >

java无法删除文件,被另一个进程使用

郁吉星
2023-03-14
问题内容

我有这个代码

 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;
}


 类似资料:
  • 我的脚本搜索特定目录中的所有pdf文件,然后从pdf中提取一个id,并在文件中组织pdf。例如我有: 我想这样组织它们: 下面的脚本做的工作,但我认为只有最后一个文件输出以下错误: 回溯(最近一次调用):文件“C:\Users\user\Downloads\aa\project.py”,第74行,在操作系统中。rename(source,dest)PermissionError:[WinError

  • 我是C#新手,连接Firebird数据库时遇到问题。我想让我的程序访问Firebird数据库[FDB格式文件]。我有问题,请参见下面的代码: 这段代码允许我读取FDB文件并提取数据。当代码第一次执行时,没有错误或问题,但是当我再次执行时,这个错误会显示出来: 进程无法访问文件“C:\Users\ACC-0001”。FDB’因为它正被另一个进程使用。

  • 当我试图删除一个文件时,它说我的服务器正在使用它,所以我尝试使用(Image img=Image.FromFile(imgFilePath))实现一个,但随后我得到了

  • 下面是使用Ucanaccess Jdbc驱动程序从Microsoft Access文件filename.accdb获取连接的代码。但在运行此代码时,它会抛出异常,就像已经使用的文件一样。 但是我想在其他应用程序使用MSAccess数据库文件时并发地使用它。 当我运行上面的代码时,出现了如下异常: net.ucanaccess.jdbc.ucanaccesssqlexception:UCAEXC::

  • 嗯,我做了这个脚本,它支持日志一些击键一段时间保存在一个文件中,然后擦除文件,如果用户想要然而当脚本tryes删除文件我得到这个错误。 Traceback(最近一次调用最后一次):文件"C:\用户\Tormenter\Desktop\S. D. A. K. L\pregunta.py",第34行,os.remove(path 2"\"name)PermissionError:[WinError 3

  • 问题内容: 我的代码用于一个脚本,该脚本查看一个文件夹并删除分辨率为1920x1080的图像。我的问题是我的代码运行时; 我收到此错误消息: 只需确认一下,Python是我计算机上运行的唯一程序。是什么导致此问题,我该如何解决? 问题答案: 您的过程就是打开文件的过程(仍然存在)。您需要先关闭它,然后再删除它。 我不知道PIL是否支持上下文,但是是否支持: 进入之前,请确保删除(并关闭文件)。 如