kiyo_hikoのブログ

メモ+日記?

Java:jarから相対パスでリソースを読み込む+特定パスの特定拡張子のファイルをゲットする

次のような構成で実行可能jarのアプリリリースの準備を急ピッチで進めているが、dataとかにアクセスしようとして少しだけハマったのでメモ。

Root <DIR>
  + 起動.bat
  +bin <DIR>
    + 本体.jar
  +config <DIR>
    + *.proprties
  +data <DIR>
    + *.txt
  +media <DIR>
    + *.wav


まず、結論から言うとdata/*.txtとかmedia/*.wavとかだけ指定すればいいらしい。
てっきにbinにjarしまったから../data/とかにするのかと思ったらはまった。


例えばdataの*.txtだけをjarから拾いたかったら、

public static void main(String[] args) {
    aho("data/", ".txt");
}
protected static void aho(String path, String ext) {
    File dir = new File(path);
    String[] files = dir.list(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(ext);
        }
    });
    for (String file : files) {
        System.out.println(file);
    }
}

みたいに書けばよさそう。
気分がstatic