问题源于此try块中具体的代码行:
try {
fInputStream = new FileInputStream(path);
#thisLine byteCount += IOUtils.copyLarge(fInputStream, fOutputStream);
fileCount++;
}
堆栈跟踪如下所示:
java.io.IOException: The process cannot access the file because another
process has locked a portion
of the file
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:233)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1719)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1696)
这似乎是特定于Windows的问题。是否有一些特定于Windows的文件I / O最佳实践可能会丢失?
答案 0 :(得分:1)
我通过传递先前创建的 let cookiesotp = new Cookies(req, res, { keys: keysotp }) // for one month coooke set
cookiesotp.set('LastVisit',new Date().toISOString(),{ domain: '.makeitdouble.com', path: '/', secure: true,HttpOnly:true, signed: true,maxAge:2628000000});
对象解决了该问题。
fileChannel
然后我创建了FileChannel fileChannel = FileChannel.open(path,
StandardOpenOption.READ,StandardOpenOption.WRITE);
对象,如下所示:
InputStream
它起作用了,没有更多的异常发生了。
答案 1 :(得分:0)
检查另一个进程是否正在访问同一文件。在Windows上按照这篇文章来弄清楚 - > https://superuser.com/questions/399659/how-can-i-identify-what-application-is-using-a-given-file
只要没有其他进程访问同一个文件,它就应该正常工作。
要确保您可以实际访问该文件,请考虑阅读以下主题 - > Java: Check if file is already open