昨天學習java I/O 發現瘋狂java講義例題FileInputStreamTest.java
(源碼:
import java.io.*;
public class FileInputStreamTest1 {
public static void main(String[] args) throws IOException{
FileInputStream fis = null;
//創建字節輸入流
fis = new FileInputStream("FileInputStreamTest1.java");
//創建字節數組
byte[] b = new byte[1024];
//保存已讀字節數
int hasRead;
while((hasRead=fis.read(b))>0){
//取出已讀字節
System.out.println(new String(b,0,hasRead));
}
fis.close();
}
}
錯誤提示碼:
Exception in thread "main" java.io.FileNotFoundException: FileInputStreamTest1.java (系統找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at FileInputStreamTest1.main(FileInputStreamTest1.java:8)
通過分析錯誤提示,自己決定首先把代碼手工編譯運行了一下,發現代碼可以正常運行,結果如下。
由此可見,問題出在MyEclipse中,感覺很可能是路徑問題。於是自己把文件名路徑改成了絕對路徑,發現確實如此。但是如果就是用輸入流打印本源代碼怎麼辦呢?
是不是可以直接在左側Package Explorer 中直接右鍵獲取源代碼的Copy Qualifide Name 的路徑,應該可以了吧,但是結果還是無法運行。
最後在此路徑前加了兩個點如下 ../coreJava/src/FileInputStreamTest1.java,發現可以正常運行。
最後,可以總結一下,在myeclipse 中的項目路徑常常導致程序無法正常讀寫操作,在有必要時可以採用絕對路徑進行讀寫操作。