读取jar文件中目录中的文件

时间:2012-03-25 20:05:08

标签: java jar directory

我正在尝试读取jar文件中的文件夹,当它不是jar格式时它工作正常,但是当我jar它时,它会返回nullpointerexpcetion,因为它无法找到文件或目录

所以,这是我的方法......

public void preloadModelsTwoOLD() {
    String slash = System.getProperty("file.separator");
    File file = new File("."+ slash +"Patches" + slash+"Models"+slash);
    File[] fileArray = file.listFiles();
    for(int y = 0; y < fileArray.length; y++) {
        String s = fileArray[y].getName();
       if (s != "") {
        byte[] buffer = readFile("."+ slash +"Patches" + slash+"Models"+slash+""+s);
        Model.method460(buffer, Integer.parseInt(getFileNameWithoutExtension(s)));
        //System.out.println("Read model: " + s);
       }
    }
}

基本上这是在jar里面的java文件中 并且jar有这个目录,其中包含我需要阅读的文件

file.java位于主文件夹中 主文件夹/类/补丁/模型 但是类文件从classes文件夹中读取,所以我就像这样 ./patches/models/+i+.dat

任何想法为什么它没有正确阅读它以及如何修复它以便它以jar格式工作,如果不是两种格式? 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

JAR中的文件被视为资源。

您需要使用

InputStream fileStream = getClass().getResourceAsStream("dir1/dir2/file1")

然后使用InputStream API从中读取

答案 1 :(得分:1)

您不应该以这种方式使用文件:路径是绝对的或相对于您执行java的目录。

喜欢使用

URL url = getClass().getResource( "<path relative to the dir containing the .class file of invoking class>" );
File file = new File( url.toURI() );

你还有this resource和我添加的副本。