添加.txt文件作为资源Java

时间:2013-12-01 06:20:26

标签: java file url embedded-resource getresource

我有一个.txt文件和一个名为res的文件中的图像。我在文件中添加了我的路径。我做了下面的代码,它在我的Eclipse IDE中运行得很好。导出jar并运行它时,它什么都不做。使用cmd运行jar表示无法找到类路径。所以我尝试了第二块代码没有成功。我的形象很好用。 bgi = new ImageIcon(getClass().getResource("bg.png"));

Scanner s = null;
        try {
            s = new Scanner(new File("res//10kaddress.txt"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        ArrayList<String> paddress = new ArrayList<String>();
        while (s.hasNext()){
            paddress.add(s.next());
        }
        s.close();

所以我尝试在下面做这个,不管我做什么都不会读取txt文件

URL url = GUI.class.getResource("10kaddress.txt");
    File ff = new File(url.getPath());


    Scanner s = null;
    try {
        s = new Scanner(ff);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    ArrayList<String> paddress = new ArrayList<String>();
    while (s.hasNext()){
        paddress.add(s.next());
    }
    s.close();

并收到此错误

java.io.FileNotFoundException: C:\Users\Major%20Lee\Sketch\GUI\res\10kaddress.txt (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.util.Scanner.<init>(Unknown Source)
    at GUI.main(GUI.java:68)
Exception in thread "main" java.lang.NullPointerException
    at GUI.main(GUI.java:73)

任何帮助都会很棒。谢谢!

2 个答案:

答案 0 :(得分:1)

我会将它作为ResourceStream打开(或者我只是使用ResourceBundle),就像这样 -

InputStream is = getClass().getResourceAsStream("10kaddress.txt");
Scanner s = new Scanner(is);

答案 1 :(得分:1)

当您在JAR中嵌入文件时,您需要使用getResourceAsStream(),因为它已被指出。

另外,我怀疑你的路上有问题。从错误中我可以看到你在Windows机器上。你的道路是:

res//10kaddress.txt  

转义分隔符时,请使用/(单正斜杠)或\\(双反斜杠)。反斜杠有另一个反斜杠,因此称为转义。尝试更改路径,看看它是否适合您。

所以,请将您的路径设为:

res/10kaddress.txt   

手动仔细检查以查看指定路径中的文件是否