getResourceAsStream()不读取任何内容

时间:2017-07-20 14:13:47

标签: java netbeans filepath

我正在开玩笑试图编写游戏的java,我不打算定义无用的细节,程序可行,但只有当我从开发它的时候(Netbeans)得到它,它才有用,但是如果我试着让它开始Jar什么都没有,我在互联网上读到要访问文件,如图像或txt文件,你必须使用Class.class.getResourceAsStream(路径),但后者无法启动它从jar,事实上或我从NullPointerException或顺利,但不加载任何东西。

消失了我会解释我项目的结构并向你展示我的代码:

列表构建

 -build
    - classes
        - mario
           -all the package and the file example: crediti/ringraziamenti.txt

列出dist

    -dist
         -jarFile
              -mario
                    -all the package and the file example: crediti/ringraziamenti.txt
              -meta inf...

列出java

    -src
        -mario
              - all the package and the file example: crediti/ringraziamenti.txt

我的代码是:

        InputStream io =(getClass().getClassLoader().getResourceAsStream("mario/crediti/ringraziamenti.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(io));

        String temp = "";
        while((temp = br.readLine())== null){
            System.out.println(""+temp);
        }

2 个答案:

答案 0 :(得分:-1)

指定资源文件夹,将文件放在那里。假设你有结构:

  

-src           -mario                  - 所有包和文件示例:   crediti / ringraziamenti.txt

resource文件夹添加到与您的包相同的级别,将文件移到那里并尝试:

InputStream io =(getClass().getClassLoader().getResourceAsStream("/crediti/ringraziamenti.txt"));

答案 1 :(得分:-2)

修改代码如下:

  1. getResourceAsStream调用中的路径前放一个斜杠,否则它将从当前类的包中开始搜索。
  2. 在while循环中,比较!= null而不是== null - 您希望循环继续运行,只要有文本行,就不会有没有行的文字。
  3. InputStream io =(getClass().getClassLoader().getResourceAsStream("/mario/crediti/ringraziamenti.txt"));
    BufferedReader br = new BufferedReader(new InputStreamReader(io));
    
    String temp;
    while((temp = br.readLine()) != null){
        System.out.println(""+temp);
    }