如何解决java.nio.file.FileSystemException进程无法访问该文件,因为另一个进程正在使用它

wsxa1bj1  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(1288)

当我运行这段代码时,我得到了异常(java.nio.file.FileSystemException)
公共字符串getScreenShotAsBase64()抛出IOException {

File source = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
String path = System.getProperty("user.dir") + "/Screenshots/image.png";
FileUtils.copyFile(source, new File(path));
byte[] imageBytes = IOUtils.toByteArray(new FileInputStream(path));
return Base64.getEncoder().encodeToString(imageBytes);

}
当我试图运行方法时,它不工作,抛出异常。

hmae6n7t

hmae6n7t1#

问题的原因是Windows不允许你的应用程序打开“Screenshots/image.png”文件进行写入,因为其他程序已经打开了该文件。它就是不允许。有关Windows文件锁定及其用途的概述,请参阅文件锁定。
此超级用户问答提供了许多方法来确定其他哪个应用程序持有文件锁:

你在这种情况下使用 selenium (可能)不合适。
您很可能需要执行以下操作之一来解决此问题。

  • 更改您的应用程序,以便在它选择的第一个目标文件被锁定时将屏幕截图写入另一个文件。
  • 告诉用户你的应用程序无法写入文件,用户消息可能会建议他们关闭任何其他正在打开图像文件的应用程序。
  • 如果另一个应用程序是Windows本身(出于某种原因),您可能需要重新考虑您试图做什么。

相关问题