[解決済み】クラスパス・ディレクトリからリソースのリストを取得する
質問
与えられたクラスパス・ディレクトリからすべてのリソース名のリストを取得する方法を探しています。
List<String> getResourceNames (String directoryName)
.
例えば、クラスパス・ディレクトリがある場合
x/y/z
を含むファイル
a.html
,
b.html
,
c.html
とサブディレクトリ
d
,
getResourceNames("x/y/z")
を返さなければなりません。
List<String>
には、以下の文字列が含まれる。
['a.html', 'b.html', 'c.html', 'd']
.
ファイルシステム上のリソースとjarの両方に対して動作するはずです。
で簡単にスニペットを書けることは知っています。
File
s,
JarFile
と
URL
しかし、私は車輪の再発明をしたくありません。私の質問は、既存の一般に利用可能なライブラリがある場合、次のような実装を行う最も手っ取り早い方法は何かということです。
getResourceNames
? SpringとApache Commonsのスタックはどちらも実現可能です。
どのように解決するのか?
カスタムスキャナ
独自のスキャナを実装します。例えば
( このソリューションの制限については、コメントで触れています。 )
private List<String> getResourceFiles(String path) throws IOException {
List<String> filenames = new ArrayList<>();
try (
InputStream in = getResourceAsStream(path);
BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
String resource;
while ((resource = br.readLine()) != null) {
filenames.add(resource);
}
}
return filenames;
}
private InputStream getResourceAsStream(String resource) {
final InputStream in
= getContextClassLoader().getResourceAsStream(resource);
return in == null ? getClass().getResourceAsStream(resource) : in;
}
private ClassLoader getContextClassLoader() {
return Thread.currentThread().getContextClassLoader();
}
Springフレームワーク
使用方法
PathMatchingResourcePatternResolver
をSpring Frameworkから取得します。
ロンマモの振り返り
他の手法では、CLASSPATHの値が巨大な場合、実行時に遅くなる可能性があります。より高速な解決策は、ronmamoの リフレクションズAPI これは、コンパイル時に検索をプリコンパイルするものです。
関連
-
[解決済み] eclipseからTomcatに物理的に発行されるmyjspはどこにあるのでしょうか?
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Javaで配列をリストに変換する
-
[解決済み] Android: リソースから名前を使って文字列を取得するには?
-
[解決済み] クラスパスとは何ですか、どのように設定するのですか?
-
[解決済み] Javaでクラスパスからテキストファイルを本当に読み込む方法
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] Androidのコールバックとは何ですか?重複
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] Javaでのスキャナが動作しない
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] eclipseからTomcatに物理的に発行されるmyjspはどこにあるのでしょうか?
-
[解決済み] アニメーションGIFの表示
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正