2011-07-31 73 views
0

在執行我得到FileNotFoundException異常FileNotFoundException異常而讀取文件

java.io.FileNotFoundException: Shyam\src\sam\examles\TextFile.txt (The system cannot find the path specified) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at sam.examples.ReadingFile.main(ReadingFile.java:9) 
下面

節目是我的java程序ReadingFile.java

package sam.examples; 

import java.io.*; 

public class ReadingFile { 
    public static void main(String[] args) { 

     try { 
      FileInputStream fstream = new FileInputStream("C:\\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt"); 
      DataInputStream dis = new DataInputStream(fstream); 
      BufferedReader br = new BufferedReader(new InputStreamReader(dis)); 

      String str; 

      while ((str = br.readLine()) != null) { 
       System.err.println(str); 
      } 

     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

} 

該文件是相同的路徑在我的Java程序是有如下

Shyam 
    |- src 
     |-sam.examples 
      |-ReadingFile.java 
      |-TextFile.txt 

請幫我們解決這個問題

+0

你確定這是使用的確切代碼,並且該文件真的存在嗎? – Bozho

+0

你真的要仔細檢查文件路徑。打開文件資源管理器並將其粘貼到地址行中...是在那裏嗎? – home

+0

FileNotFoundException不會說謊:文件真的不在那裏。 –

回答

2

您可能需要轉義文件路徑中的反斜槓。你已經爲第一個而不是其他人完成了。

FileInputStream fstream = new FileInputStream("C:\\Documents and Settings\\flower\\workspace\\Shyam\\src\\sam\\examples\\TextFile.txt"); 
+0

不錯的地方,但這引發了我的問題,這是否是實際的代碼。因爲它是它的當前形式,它不會編譯 – Bozho

+0

...或者只是使用正斜槓:''C:/ Documents and Settings/flower/workspace/...' –

+0

我想它不會編譯而不逃避backslahes ...或做到了嗎? – home

2

您的異常表明您指定的路徑不同。要麼使用完整的絕對路徑(如代碼中所示,但可能未執行),或使用classpath資源。

  • 對於絕對路徑方法,您需要編譯上述代碼(現在不會)。逃避所有斜線(如Martin所示)或使用正斜線(如Bart建議)。但使用絕對路徑很少是一個好主意
  • 在類路徑中有.txt文件。也就是說.class文件所在的位置(不僅是.java文件所在的位置),而且還使用getClass().getResourceAsStream("Text.txt")。這將查找當前類所在的包中的文件。您還可以使用類路徑,絕對路徑,像.getResourceAsStream("/sam/examples/TextFile.txt")
1

調試提示:

重構這一行:

FileInputStream fstream = new FileInputStream("C:\\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt"); 

File file = new File("C:\\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt"); 
System.out.println(file.getAbsolutePath()); 
FileInputStream fstream = new FileInputStream(file); 

如果輸出後來看到真是那個文件。

+0

這是一個非常有用的提示。強烈推薦。特別是在一個'catch(FileNotFoundException e){拋出新的RuntimeException(「絕對路徑=」+ file.getAbsolutPath,e)}塊。 –

0

你永遠不需要在Java文件名中使用反斜槓。將它們全部更改爲正斜槓並擺脫雙重斜槓。

0

嘗試這些..

的FileInputStream的fstream =新的FileInputStream(新文件( 「C:\ Documents和Settings \花\工作空間\希亞姆\ SRC \ SAM \例子\ TextFile.txt的」));

的FileReader fstream的新=的FileReader(新文件( 「C:\ Documents和Settings \花\工作空間\希亞姆\ SRC \ SAM \例子\ TextFile.txt的」));

BufferedReader in = new BufferedReader(fstream);

相關問題