我知道没有标准的Java机制可以测试文件是否打开。
谁能告诉我是否有任何图书馆可以用来完成这项任务,或者通过其他方式,
这是我的情况,例如我手动打开docx文件时,当我尝试上载该文件本身时,由于该文件已打开,因此该文件未上载,因此,如果我们尝试上载在外部打开的文件,则需要显示一个提示“文件已打开”的消息。
最佳答案
使用Java
如果您的客户端是Java客户端(您在问题中没有提到),则可以尝试this answer中的以下代码:
使用Apache Commons IO库...
boolean isFileUnlocked = false;
try {
org.apache.commons.io.FileUtils.touch(yourFile);
isFileUnlocked = true;
} catch (IOException e) {
isFileUnlocked = false;
}
if(isFileUnlocked){
// Do stuff you need to do with a file that is NOT locked.
} else {
// Do stuff you need to do with a file that IS locked
}
顺便说一句:这是当您在Google上搜索“ java文件已打开”时的第一个答案。
使用JavaScript
但是,我假设您没有Java客户端,只有Java服务器,并且想通过网页上传文件(因此,您有HTML + JS客户端)。我想是因为你不告诉我们。
JavaScript不允许您写入磁盘,因为这是一个安全问题(我认为Chrome支持某种JavaScript File API,允许您写入磁盘,但其他浏览器均不支持)。因此,您无法通过JavaScript进行测试。
一般来说
测试文件是否打开的一般方法是测试文件是否有锁。但这不能保证没有锁就不会打开该文件,但是应该足够了。