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