Loading...

マーキングファイルを探して

java8です。
簡単なアプリケーションを作るときに、よく悩むのは、設定ファイルの置き場とか、作業ディレクトリの特定なのですが、昔から、マーキングファイルをおいて、アプリケーションから、そのマーキングファイルを探して、そこを作業場所にするという方法をよくとります。

マーキングファイルを探す場合、簡単な再帰メソッドを用意して、特定のクラスから、ルート(parent)に向かって探す方法をとります。再帰を使う理由は、自分がわかりやすいからなのですが、毎回、2つメソッドを用意して記述していたので、それが不満でした。

で、今回、java8に用意されているものを使って書き直してみました。


以下

import java.io.File; import java.net.URISyntaxException; import java.net.URL; import java.util.Arrays; import java.util.Optional; import java.util.function.Predicate; public class MainTest { public static void main(String[] args) throws URISyntaxException { Optional<File> optional = findMarkingFile("__HOME__"); System.out.println(optional.isPresent()); } static public Optional<File> findMarkingFile(String name) throws URISyntaxException { URL url = MainTest.class.getResource("/"); File file = new File(url.toURI()); Predicate<File> predicate = (File f)->{ return (f.getName().equals(name)); }; do { Optional<File> optional = Arrays.asList(file.listFiles()).stream().filter(predicate).findFirst(); if (optional.isPresent()) { return optional; } file = file.getParentFile(); }while(file != null); return Optional.ofNullable(null); } }


リアクション: 
マーキングファイル 6141288896750634045

コメントを投稿

ホーム item

このブログを検索

Random Posts

Popular Posts

Labels

ADS