Eclipse出现FileInputStream出现例外原因分析
昨天学习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 中的项目路径常常导致程序无法正常读写操作,在有必要时可以采用绝对路径进行读写操作。