在Java中(相当于Perl的-e $filename)打开文件读取之前,如何检查文件是否存在?
SO中唯一类似的问题涉及写入文件,因此使用FileWriter来回答,这显然不适用于这里。
如果可能的话,我更喜欢一个真正的API调用返回true/false,而不是一些“调用API打开一个文件,并在它抛出一个异常时捕获你检查文本中的‘无文件’”,但我可以接受后者。
在Java中(相当于Perl的-e $filename)打开文件读取之前,如何检查文件是否存在?
SO中唯一类似的问题涉及写入文件,因此使用FileWriter来回答,这显然不适用于这里。
如果可能的话,我更喜欢一个真正的API调用返回true/false,而不是一些“调用API打开一个文件,并在它抛出一个异常时捕获你检查文本中的‘无文件’”,但我可以接受后者。
当前回答
你可以使用以下方法:
其他回答
使用java.io.File:
File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) {
// do something
}
不喜欢。只是捕捉FileNotFoundException。文件系统必须测试文件是否存在。把所有的事情都做两次是没有意义的,原因如下:
双倍代码 计时窗口问题,即文件可能在测试时存在,但在打开时不存在,反之亦然 事实上,这个问题的存在表明,你可能做了错误的测试,得到了错误的答案。
不要试图猜测这个系统。它知道。不要试图预测未来。一般来说,测试任何资源是否可用的最佳方法就是尝试使用它。
你可以使用以下方法:
不要在String中使用File构造函数。 这可能行不通! 而不是使用URI:
File f = new File(new URI("file:///"+filePathString.replace('\\', '/')));
if(f.exists() && !f.isDirectory()) {
// to do
}
f.isFile() && f.canRead()