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(); } }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 中的项目路径常常导致程序无法正常读写操作,在有必要时可以采用绝对路径进行读写操作。