0

我的 jar 中有一个名为“课程”的目录。在这个目录中有 x 个课程文本文件。我想通过所有这些课程循环阅读他们的数据。

我当然知道如何读取具有确切路径的文件:

BufferedReader in = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream("lessons/lesson1.lsn")));
    try{
        in.readLine();
    }catch(IOException e){
        e.printStackTrace();
    }

但我想要的是更像这样的东西:

File f = new File(Main.class.getResource("lessons"));
    String fnames[] = f.list();
    for(String fname : fnames){
        BufferedReader in = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream("lessons/" + fname)));
        in.readLine();
    }

但是,文件的构造函数中没有 URL,因此该代码不起作用。

4

1 回答 1

0

我将在我的测试中使用 junit.jar 作为示例

String url = Test1.class.getResource("/org/junit").toString();

生产

jar:file:/D:/repository/junit/junit/4.11/junit-4.11.jar!/org/junit

让我们提取jar路径

String path = url.replaceAll("jar:file:/(.*)!.*", "$1");

这是

D:/repository/junit/junit/4.11/junit-4.11.jar

现在我们可以将它作为 JarFile 打开并读取它

JarFile jarFile = new JarFile(path);
...
于 2013-07-04T01:49:18.683 回答