B-Teck!

お仕事からゲームまで幅広く

【Java/Kotlin】resourcesディレクトリにあるファイルを読む

ルートからの絶対パスで指定したリソースファイルを取得するスニペット。
IOExceptionはそのまま外に投げているので必要があればcatchしてリカバリーまで書くこと。

Java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.stream.Collectors;

public class JavaResource {
    public String javaResourceAccess(String fileName) throws IOException {
        final InputStream someStream = this.getClass().getClassLoader().getResourceAsStream(fileName);
        if (someStream == null) return null;

        try (BufferedReader br = new BufferedReader(new InputStreamReader(someStream, StandardCharsets.UTF_8))) {
            // Kotlin版のBufferedReader.readText()がsuffixに"\n"が付与されているため、合わせてつけている
            // 通常利用の場合は `Collectors.joining("\n")` でもよい
            return br.lines().collect(Collectors.joining("\n", "", "\n"));
        }
    }
}

Kotlin

class KotlinResource {
    @Throws(IOException::class)
    fun kotlinResourceAccess(fileName : String) = this.javaClass
        .classLoader
        .getResourceAsStream(fileName)
        ?.bufferedReader()
        ?.use { it.readText() }
}