2012-03-27 111 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

相關問題