有一些API允许检查文件是否被其他程序锁定或打开,因此我的进程无法写入该文件。
e.g。我们可以用这个:
File f = new File("some-locked-file.txt");
System.out.println(f.canWrite()); // -> true
new FileOutputStream(f); // -> throws a FileNotFoundException
但无法保证这将在100%的情况下起作用。
例如,在我的Windows机器上,如果我正在尝试检查.csv
文件,它按预期工作 - 当我用另一个程序打开.csv
文件时,我的Java代码将抛出{{1但是,使用简单的记事本打开的普通FileNotFoundException
文件没有例外。
有没有简单的方法来检查文件是否以100%的可靠性锁定?
答案 0 :(得分:0)
这结果是一个有趣的问题,我自己尝试了几件事,下面是我的观察:
java.io.FileNotFoundException: C:\E_Drive\him.csv (The process cannot access the file because it is being used by another process)
取决于打开文件的编辑器。 new FileOutputStream(file);
不会抛出异常,但如果从excel打开相同的txt文件,则new FileOutputStream(file);
会抛出异常。所以,我认为你问题的真正答案是"它取决于"。