resources の全ファイルリスト

Java プロジェクト
 src/main/java
 src/main/resources
の出力フォルダー
 target/classes
これは、

ClassLoader loader = Thread.currentThread().getContextClassLoader();
URL url = loader.getResource("./");
String path = url.getPath();

でパスを取得できる。
この target/classes 下の全ファイルPATH のリスト List<String> を求めるのは、
再帰メソッドが必要で、
これらを求めるユーティリティーを以前、作成した⇒ FileCollection
yipuran-core/FileCollection.java at master · yipuran/yipuran-core · GitHub

これを使って、、

ClassLoader loader = Thread.currentThread().getContextClassLoader();
URL url = loader.getResource("./");
String path = url.getPath();
FileCollection fc = FileCollection.of(path);
List<String> list = fc.scan(f->{ return f.isFile();}).stream().map(f->f.getAbsolutePath()).collect(Collectors.toList());

今、思うと、FileCollection の

	/**
	 * Predicate走査実行→コレクション取得.
	 * @param p 検査するPredicate&lt;File&gt;
	 * @return List&lt;File&gt;
	 */
	public List<File> scan(Predicate<File> p){
		return parse(file, new ArrayList<>(), p);
	}
	/**
	 * 走査 Consumer実行.
	 * @param c Consumer&lt;File&gt;
	 */
	public void scan(Consumer<File> c){
		parse(file, c);
	}

これは、同じ scan というメソッドになっていて良くない。
Predicate走査の方は、今度、名前を変えようと思う。
そうすれば、上のロジックももう少し綺麗に書ける。

 fc.scan(f->{ return f.isFile();}).

でなくて、Predicate走査のメソッド名を scanProvision という名にすれば、

 fc.scanProvision(f->f.isFile()).

と書けたのだ。
yipuran-core バージョン 4.32 で、そうしようと思う。