4

我想使用File對象初始化FileInputStream對象。我上線使用File對象初始化FileInputStream時獲取FileNotFoundException

fis = new FileInputStream(file); 

,因爲我已經打開這個文件,通過同樣的方法做正則表達式很多時候,這是奇怪的得到一個FileNotFound錯誤。

我的方法如下:

private BufferedInputStream fileToBIS(File file){ 

    FileInputStream fis = null; 
    BufferedInputStream bis =null; 
    try { 
     fis = new FileInputStream(file); 
     bis = new BufferedInputStream(fis); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return bis; 
} 

java.io.FileNotFoundException:C:\ dev的\服務器\的tomcat6 \ web應用\樣品的位點(訪問被拒絕)
       在java的.io.FileInputStream.open(本機方法)
       在java.io.FileInputStream中。(來源不明)
       在java.io.FileInputStream中。(未知來源)
       在controller.ScanEditRegions.fileToBIS(ScanEditRegions.java:52)
       在controller.ScanEditRegions.tidyHTML(ScanEditRegions.java:38 )
       在controller.ScanEditRegions.process(ScanEditRegions.java:64)
       在controller.ScanEditRegions。 visitAllDirsAndFiles(ScanEditRegions.java:148)
       在controller.Manager.main(Manager.java:10)

+0

是否有文件,你有權限問題? – 2009-06-16 05:59:50

回答

9

由您在您的文章粘貼我猜堆棧跟蹤來看你沒有閱讀文件的權利。

File類可以讓你在文件上執行有用的檢查,他們中的一些:

boolean canExecute(); 
boolean canRead(); 
boolean canWrite(); 
boolean exists(); 
boolean isFile(); 
boolean isDirectory(); 

例如,你可以檢查:是否存在()& & ISFILE()& &的CanRead()和根據您無法讀取文件的原因打印出更好的錯誤消息。

+0

問題是一個目錄被傳入(以及許多文件) – Ankur 2009-06-16 07:08:24

+0

同樣的概率我也發現和我的錯誤是 02-10 14:18:25.367:W/System.err (365):java.io.FileNotFoundException:/storage/emulated/0/bhanuдо_свидания.txt:open failed:ENOENT(No such file or directory) 02-10 14:18:25.367:W/System.err(365) :\t at libcore.io.IoBridge.open(IoBridge.java:409) 02-10 14:18:25.367:W/System.err(365):\t at java.io.FileInputStream。 (FileInputStream.java:78) – 2014-02-10 09:03:02

3

這是與在OS文件權限設置執行。您已經作爲無權訪問特定目錄的用戶啓動java進程。

3

你可能想確保(在有可能罩的順序排列):

  1. 該文件存在。
  2. 該文件不是一個目錄。
  3. 您或Java進程有權打開該文件。
  4. 另一個進程沒有在文件上的鎖(有可能的,因爲你可能會得到一個標準的IOException異常,而不是FileNotFoundException異常)
+0

同樣的概率我也發現和我的錯誤是02-10 14:18:25.367:W/System.err(365):java.io.FileNotFoundException:/storage/emulated/0/bhanuдо_свидания.txt:打開失敗:ENOENT(沒有這樣的文件或目錄)02-10 14:18:25.367:W/System.err(365):在libcore.io.IoBridge.open(IoBridge.java:409)02-10 14:18:25.367:W/System.err(365):在java.io.FileInputStream。 (FileInputStream.java:78) – 2014-02-10 09:03:49

-1

我想你正在執行eclipse或任何java IDE中的語句,並且目標文件也存在於IDE工作區中。由於Eclipse無法在同一工作區中讀取目標文件,因此您將收到錯誤消息。您可以從命令提示符運行您的代碼。它不應該通過任何例外。