检查应用程序jar中的文件结构

时间:2013-07-03 23:57:47

标签: java file-io jar

我的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,因此代码不起作用。

1 个答案:

答案 0 :(得分: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);
...