【发布时间】:2015-04-01 11:24:41
【问题描述】:
我想测试一个文件是否存在于已挂载的网络驱动器上。
我使用File.exists 编写了这个简单的代码。
import java.io.File;
public class NetworkDrive {
public static void main(String[] args) {
System.err.println(new File("/Volumes/DATA/testedFile.txt").exists());
}
}
它大部分情况下都能正常工作,但我发现此代码存在问题的边缘情况。 如果驱动器已安装并且由于某种原因网络连接失败, 程序挂起很长时间(10 分钟)。
time java NetworkDrive
false
real 10m6.114s
user 0m0.431s
sys 0m0.949s
即使我尝试使用KILL 信号杀死它,进程仍在运行。
1875 ttys000 0:00.00 (java)
问题和java.nio一样:
Files.exists(Paths.get("/Volumes/DATA/testedFile.txt"));
我在 OS X Yosemite 上使用 java 版本 1.8.0_20。
【问题讨论】:
-
虽然应该不会有太大变化,但是你试过
java.nio.file.Files#exists()吗? -
@fge,是的。这是我第一次尝试。
-
那么,坚持 java.nio.file。这是 2015 年,无论如何你都应该放弃 File
-
我很抱歉,但两者都失败了。我有完全相同的问题:
Files.exists(Paths.get("/Volumes/DATA/testedFile.txt")) -
是的,我明白,这不是我的意思;我的意思是,如果您使用 java.nio.file,请删除文件使用情况。文件有很多 java.nio.file 没有的问题。
标签: java macos filesystems