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

Java 读取jar文件中目录中的文件,java,jar,directory,Java,Jar,Directory,我试图读取jar文件中的文件夹,当它不是jar格式时工作正常,但是当我jar它时,它返回一个NullPointerExpetion,因为它无法找到文件或目录 所以,这是我的方法 public void preloadModelsTwoOLD() { String slash = System.getProperty("file.separator"); File file = new File("."+ slash +"Patches" + slash+"Models"+slas

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

所以,这是我的方法

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);
       }
    }
}
public-void-modelstwold(){
字符串斜杠=System.getProperty(“file.separator”);
文件文件=新文件(“.”+斜杠+“补丁”+斜杠+“模型”+斜杠);
File[]fileArray=File.listFiles();
对于(int y=0;y
基本上这是在jar中的一个java文件中 jar有一个目录,里面有我需要它读取的文件

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

关于它为什么没有正确阅读它,以及如何着手修复它,使它在jar格式(如果不是两种格式)下工作,有什么想法吗?
非常感谢您的帮助。

JAR中的文件被视为资源

你需要使用

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

然后使用InputStream API从中读取文件

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

喜欢使用

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

您还有和我添加的副本。

好的,现在我有了这个InputStream fileStream=getClass().getResourceAsStream(“.”+斜杠+“补丁”+斜杠+“模型”+斜杠);File[]fileArray=fileStream.listFiles();但是listFiles()不是资源的有效方法,资源的有效方法是什么?我如何在这个方法中使用它?因此您可以使用类加载器来获取该“包”中的资源列表。classloader.getResources()应该为您提供列表。请参见snippets.dzone.com/posts/show/4831以获取有关使用的示例