0

jar に「lessons」というディレクトリがあります。このディレクトリ内には、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を使用します

文字列 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 に答える