2012-03-27 109 views
-1

如何检查文件是否存在并打开它?java如何检查文件是否存在并打开它?

if(file is found) 
{ 
    FileInputStream file = new FileInputStream("file"); 
} 
+0

可能重复的[如何检查文件是否存在? (在Windows上的Java)](http://stackoverflow.com/questions/1816673/how-do-i-check-if-a-file-exists-java-on-windows) – anubhava 2012-03-27 18:02:05

回答

12

File.isFile会告诉你一个文件存在,而不是一个目录。

请注意,该文件可能会在您的支票和您尝试打开它之间删除,并且该方法不会检查当前用户是否具有读取权限。

File f = new File("file"); 
if (f.isFile() && f.canRead()) { 
    try { 
    // Open the stream. 
    FileInputStream in = new FileInputStream(f); 
    // To read chars from it, use new InputStreamReader 
    // and specify the encoding. 
    try { 
     // Do something with in. 
    } finally { 
     in.close(); 
    } 
    } catch (IOException ex) { 
    // Appropriate error handling here. 
    } 
} 
+0

关闭流的方式不正确。 in.close()应该在第一次尝试的最后。我给你一个减号提醒。 – 2014-10-16 07:08:54

+0

@Charles Wu,在处理任何异常之前,通过关闭'in'不会丢失任何东西。另外,因为'FileInputStream'构造函数抛出'IOException'处理函数,'in'变量不能在'IOException'处理函数之外初始化,所以如果我把'finally'移到外面,我必须做一些愚蠢的窍门,比如初始化'in'在null中检查并且在'finally'中检查这只会使事情复杂化,即使我真的想忍受这种不必要的复杂性,无论如何我需要一个'try',因为'in.close()'可以抛出'IOException'。 – 2014-10-16 12:02:11

+0

我的道歉误解你的代码。在内部try语句中使用FileInputStream的实例可以关闭in。但是'in.close()'的传播异常可能会在另一个'in'方法抛出异常时覆盖异常。 – 2014-12-04 02:10:34

0

您可以找到documentationexists方法:

File file = new File(yourPath); 
if(file.exists()) 
    FileInputStream file = new FileInputStream(file); 
+0

该死的有人生我的气。 。 – talnicolas 2015-08-20 20:40:34

5

您需要首先创建一个文件对象,然后用它的存在()方法来检查。该文件对象然后可以传递到FileInputStream构造函数中。

File file = new File("file");  
if (file.exists()) { 
    FileInputStream fileInputStream = new FileInputStream(file); 
} 
+0

谢谢,很好的回答。 – user93200 2012-04-03 02:34:51

相关问题