154

プロジェクトのルートにリソース フォルダー/パッケージがありますが、特定のファイルをロードしたくありません。特定のファイルをロードしたい場合は、class.getResourceAsStream を使用すれば問題ありません!! 私が実際にやりたいことは、リソースフォルダー内に「フォルダー」をロードし、そのフォルダー内のファイルをループし、各ファイルへのストリームを取得してコンテンツを読み取ることです...ファイル名は実行前に決定されないと仮定します... 私は何をすべきか?jar ファイル内のフォルダー内のファイルのリストを取得する方法はありますか? リソースを含む Jar ファイルは、コードが実行されているのと同じ jar ファイルであることに注意してください...

4

12 に答える 12

11

以下を試してください。
リソース パスを"<PathRelativeToThisClassFile>/<ResourceDirectory>" 作成します。たとえば、クラス パスが com.abc.package.MyClass で、リソース ファイルが src/com/abc/package/resources/ 内にある場合:

URL url = MyClass.class.getResource("resources/");
if (url == null) {
     // error - missing folder
} else {
    File dir = new File(url.toURI());
    for (File nextFile : dir.listFiles()) {
        // Do something with nextFile
    }
}

使用することもできます

URL url = MyClass.class.getResource("/com/abc/package/resources/");
于 2012-11-05T07:13:02.667 に答える
-2

シンプル ... OSGi を使用します。OSGi では、findEntries と findPaths を使用してバンドルのエントリを反復処理できます。

于 2014-06-17T18:02:03.257 に答える
-28

このリンクはその方法を教えてくれます。

魔法はgetResourceAsStream()メソッドです:

InputStream is = 
this.getClass().getClassLoader().getResourceAsStream("yourpackage/mypackage/myfile.xml")
于 2012-06-13T10:28:48.960 に答える