0

それぞれが一連のファイル(およびルートにある他のファイル)を含む2つのフォルダーを含むjarファイルがあります。

myjar.jar
 > sub1
    > file1.txt
    > file2.txt
    > file3.txt
    > ...
 > sub2
    > file1.txt
    > file2.txt
    > file3.txt
    > ...
 > otherfile.txt

すべてのリソース/テキスト ファイルを読み取り、リソースごとにそれらを文字列に変換する必要があるアプリケーションを含む myjar.jar に依存する別のプロジェクトがあります。したがって、私はやりたいです

URL url = this.class.getClassLoader().getResource("sub1");
// Somehow iterate all sub urls and convert to string

これを行うための良い提案はありますか? 1つのアプローチは次のとおりです。

String scheme = url.getProtocol();
if (!"jar".equals(scheme)) {
  // Hm who if we simply want to run from the workspace???
  throw new IllegalArgumentException("Unsupported scheme: " + scheme);
}
JarURLConnection con = (JarURLConnection) url.openConnection();
JarFile archive = con.getJarFile();
Enumeration<JarEntry> entries = archive.entries();
while (entries.hasMoreElements()) {
  JarEntry entry = entries.nextElement();
  if (entry.getName().startsWith(folder)) {
    System.out.println(entry.getName());
  }
}

しかし、この低レベルのコードは避けたいと思います。

4

0 に答える 0