日期:2014-05-20  浏览次数:20663 次

在Java核心技术卷一遇到的一个文件输入问题,书中的源码如下,但在Scanner in = new Scanner(stream)处初始化出错,请各位帮忙看看
import java.awt.EventQueue;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.InputStream;
import java.net.URL;
import java.util.Scanner;

import javax.swing.JFrame;
import javax.swing.JTextArea;


public class ResourceTest {
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){ 
public void run() {
ResourceFrame frame = new ResourceFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class ResourceFrame extends JFrame{
public ResourceFrame(){
setSize(500, 300);
URL url = getClass().getResource("speed.gif");
Image img = Toolkit.getDefaultToolkit().getImage(url);
setIconImage(img);

JTextArea area = new JTextArea();
InputStream stream = getClass().getResourceAsStream("student.txt");
Scanner in = new Scanner(stream);
while(in.hasNext())
area.append(in.nextLine()+"\n");
add(area);

}
}          

------最佳解决方案--------------------
和ResourceTest.class放到一起。
------其他解决方案--------------------
把speed.gif,student.txt添加到类路径下
------其他解决方案--------------------
把student.txt和speed.gif放置在该类同目录下就行了。
------其他解决方案--------------------
引用:
把speed.gif,student.txt添加到类路径下

以前遇到过这种问题,我就是把图片和文档放在类路径下了的,eclipse还是报出异常!
------其他解决方案--------------------
引用:
和ResourceTest.class放到一起。

这样就对了,但是有一个问题,我以前在放置程序的相关文件(比如.gif或者.txt)时是直接把他们放在的工程目录下,为什么今天就不行了?
------其他解决方案--------------------
引用:
引用:把speed.gif,student.txt添加到类路径下
以前遇到过这种问题,我就是把图片和文档放在类路径下了的,eclipse还是报出异常!
src目录下
------其他解决方案--------------------
引用:
引用:和ResourceTest.class放到一起。
这样就对了,但是有一个问题,我以前在放置程序的相关文件(比如.gif或者.txt)时是直接把他们放在的工程目录下,为什么今天就不行了?

看过Class类的getResource/getResourceAsStream的文档就明白了。