A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© admin 程序媛   /  2011-7-14 11:25  /  3633 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

已经将建立好的Helpmsg.txt放在跟.java文件同一目录下,下面是.java文件读取文件的代码,编译时发生了FileNotFoundException,请问是为何?  
File inFile=new File("Helpmsg.txt");
FileInputStream inStream=new FileInputStream(inFile);

9 个回复

倒序浏览
黑马网友  发表于 2011-7-14 12:21:39
沙发
找不到"Helpmsg.txt"
一定要输入文件的绝对路径
回复 使用道具 举报
黑马网友  发表于 2011-7-14 12:29:34
藤椅

只封装成了对象

File inFile=new File("Helpmsg.txt");
inFile.createNewFile();
FileInputStream inStream=new FileInputStream(inFile); inFile.createNewFile();

在中间加上一句话就可以了。
File inFile=new File("Helpmsg.txt");
这句话只是把"Helpmsg.txt"封装成一个对象,并没有在硬盘上创建文件。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-14 12:36:38
板凳
编译器是从当前编译的目录开始查找配置文件的,所以一定要相对于要加载类的相对或绝对路径
InputStream ips=ReflectTest2.class.getClassLoader().getResourceAsStream("com/it315/day1/config.properties");
InputStream ips=ReflectTest2.class.getResourceAsStream("resources/config.properties");
InputStream ips=ReflectTest2.class.getResourceAsStream("/com/it315/day1/resources/config.properties");

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-14 12:44:47
报纸
各述已见很好,已经给分了,加油
回复 使用道具 举报
黑马网友  发表于 2011-7-14 13:00:35
地板
哈哈,谢谢,一分到手喽,吃中饭去了。
回复 使用道具 举报
黑马网友  发表于 2011-7-14 13:20:19
7#
File inFile=new File("Helpmsg.txt");
并没有创建对象
想创建文件用这个方法试试
inFile.createNewFile();
回复 使用道具 举报
黑马网友  发表于 2011-7-15 14:16:32
8#
定义FileInputStream一定要用try包围,
改成如下代码试试:
File inFile = new File("Helpmsg.txt");

inFile.createNewFile();

FileInputStream fileInputStream;
try {

fileInputStream = new  FileInputStream(inFile);

} catch(FileNotFoundException ex) {

ex.printStackTrace();
}
回复 使用道具 举报
黑马网友  发表于 2011-7-15 14:59:22
9#
首先,编译器只能发现语法错误和静态语义错误。 FileNotFoundException异常只能在运行的时候发现,因此您说错了。
然后,若您在CMD中运行程序,则代码中的相对路径是相对于 “CMD的当前路径来说的”,而不是“.java”文件所在的路径。

验证步骤:
第一,在D盘建立一个名为test的文件夹。
第二,在test内建立一个“Helpmsg.txt” 和一个“Demo.java”文件。
第三,打开“Helpmsg.txt”,在其内写入一个字符串“Hello World!!”,并保存退出。
第四,打开“Demo.java”,写入如下代码:[code=java]import java.io.*;
public class Demo{
        public static void main(String[] args)throws Exception{
                File inFile=new File("Helpmsg.txt");
                FileInputStream inStream=new FileInputStream(inFile);
                int temp;
                while((temp = inStream.read()) != -1){
                        System.out.print((char)temp);
                }
                inStream.close();
        }
}[/code]第五,想办法编译这个“Demo.java”文件。
第六,把“;D:\test”,放到您计算机的classpath变量的最后面。若您的计算机没有classpath变量,则新建一个即可。classpath变量和path变量在同一个地方。
第七,关闭所有已经打开的cmd,然后再重新开一个新的。
第八,进入D盘根目录即可。
第九,输入 java Demo ,观察程序执行结果:
Exception in thread "main" java.io.FileNotFoundException: Helpmsg.txt (系统找不到指定的文件。)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at Demo.main(Demo.java:5)

第十,进入“D:\test”,中输入 java Demo ,则程序输出“Hello World!!” 。

评分

参与人数 1技术分 +3 收起 理由
admin + 3 答得非常好,思路很清晰。

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-17 17:27:10
10#
file 方法就是这点不好,还得用绝对路径
“ ReflectTest2.class.getResourceAsStream("resources/config.properties"); ”
还是反射好用!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马