黑马程序员技术交流社区

标题: IO问题 [打印本页]

作者: Inspur    时间: 2013-9-16 11:46
标题: IO问题
本帖最后由 Inspur 于 2013-9-20 10:57 编辑

大家都知道,InputStream in = new FileInputStream("file.txt");只要将file.txt和该类的字节码文件放在同一个目录下面就行,也就是相对路径,但是我的myeclipse里面这样写
InputStream in = null;                try {
                        in = new FileInputStream("file.txt");
                      }
怎么老是提示我指定的文件找不到啊?我将代码用javac编译可以运行,为什么在myeclipse里面不行,请大家帮忙看看,谢谢




作者: 2012    时间: 2013-9-16 11:53
这是一个关于文件路径的问题:
1.尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径。这是一颗定时炸弹,随时可能要你的命。

  2.尽量使用URI形式的绝对路径资源。它可以很容易的转变为URI,URL,File对象。

  3.尽量使用相对classpath的相对路径。不要使用绝对路径。使用上面ClassLoaderUtil类的public static URL getExtendResource(String relativePath)方法已经能够使用相对于classpath的相对路径定位所有位置的资源。

  4.绝对不要使用硬编码的绝对路径(D:\\***)。因为,我们完全可以使用ClassLoader类的getResource("")方法得到当前classpath的绝对路径。
使用硬编码的绝对路径是完全没有必要的!它一定会让你死的很难看!程序将无法移植!

  如果你一定要指定一个绝对路径,那么使用配置文件,也比硬编码要好得多!

  当然,我还是推荐你使用程序得到classpath的绝对路径来拼资源的绝对路径!


希望对你有帮助!
作者: 依旧    时间: 2013-9-16 13:26
楼上的哥们写得很详细,找不到文件,是因为你要读取的文件目录放错位置了,在Myeclipse中你应该把文件放在项目的根目录下面,不要放在包里面,这个方法只解决你当前的问题,今后的开发请借鉴楼上兄弟提供的方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2