Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问Jar文件中的文件和文件夹_Java - Fatal编程技术网

Java 访问Jar文件中的文件和文件夹

Java 访问Jar文件中的文件和文件夹,java,Java,有许多类似的问题,但这不是重复。这类似于“无法访问Jar文件中的文件”,但有一点不同。通过大量的实验和论坛阅读,我成功地访问了一个文件的内容,并从Jar文件中显示它们。问题是,如果我将文件放在一个文件夹中,那么我的程序将不再工作,即使它在我运行类文件时工作。这是一个问题,因为当我制作游戏和其他程序时,我喜欢有不同的组织文件夹,如“地图”和“精灵表”。我制作了一个实验程序来解决这个问题,下面是代码: try { InputStream is = getC

有许多类似的问题,但这不是重复。这类似于“无法访问Jar文件中的文件”,但有一点不同。通过大量的实验和论坛阅读,我成功地访问了一个文件的内容,并从Jar文件中显示它们。问题是,如果我将文件放在一个文件夹中,那么我的程序将不再工作,即使它在我运行类文件时工作。这是一个问题,因为当我制作游戏和其他程序时,我喜欢有不同的组织文件夹,如“地图”和“精灵表”。我制作了一个实验程序来解决这个问题,下面是代码:

        try {
              InputStream is = getClass().getResourceAsStream("folder\\test.txt");
              InputStreamReader isr = new InputStreamReader(is);
              BufferedReader br = new BufferedReader(isr);
              String line;
              while ((line = br.readLine()) != null)  {
                System.out.println(line);
              }
             br.close();
             isr.close();
             is.close();

       } catch (Exception ex) {}
我没有在catch部分做任何事情,因为我已经用它找到了有问题的区域。以下是我的目录结构:

JarFileText
  classes
    com
      sayedhajaj
        folder
          test.txt
        JarFileText.class
        test.txt
   source
     com
       sayedhajaj
         JarFileText.java
当我尝试访问不在文件夹中的文本文件副本时,一切正常。但是,如果我尝试访问“文件夹”中的副本,则返回null。

这是解决方案:

        try {
              InputStream is = getClass().getResourceAsStream("folder/test.txt");
              InputStreamReader isr = new InputStreamReader(is);
              BufferedReader br = new BufferedReader(isr);
              String line;
              while ((line = br.readLine()) != null)  {
                System.out.println(line);
              }
             br.close();
             isr.close();
             is.close();

       } catch (Exception ex) {}

catch(Exception ex){}
——说不是这样。这对我来说毫无意义:
“我没有在catch部分做任何事情,因为我已经用它找到了有问题的区域。”
什么?我不明白你的意思。@ha9u63ar不,不是。阅读:资源的名称是一个“/”分隔的路径名,用于标识资源。您认为最值得信任的是什么?javadoc,或者你读过的大部分帖子?@JBNizet谢谢你的更正:)