当メモは2019-12-04に投稿されたものを加筆修正し、再掲したものです。
目次
クラスパス上にあるプロパティファイルを読み込むには・・・?
Javaだとクラスパス上にあるリソースを読み込むにはJavaクラスクラス(Class<?>
のクラス)の利用するがKotlin
だとどうするのかな?と思って調べたものです。
Javaクラスクラスを参照するには、this.javaClass
とすればいいらしいです。
クラスローダーも.classLoader
でいいみたいです。
以下は簡単なクラスパスの通ったディレクトリに置かれたプロパティファイルを読み取るサンプルです。
Main.kt
import java.io.File import java.io.InputStreamReader import java.net.URL import java.util.* class PropertiesReadSample1 { fun readProperty() { val prop = Properties() val resource: URL? = this.javaClass.classLoader.getResource("sample.properties") InputStreamReader(resource?.openStream(), "UTF-8").use { inStream -> prop.load(inStream) println("ooo's value is ${prop.getProperty("aaa")}") println("bbb's value is ${prop.getProperty("bbb")}") println("ううう's value is ${prop.getProperty("ううう")}") } } } fun main(args: Array<String>) { PropertiesReadSample1().readProperty() }
sample.properties [UTF-8] (クラスパスの通ったディレクトリに置くこと)
aaa=100 bbb=200 ううう=300
出力結果
ooo's value is 100 bbb's value is 200 ううう's value is 300
ちょっと脇道に逸れるけど、Propertiesファイルってnative2asciiしなくても大丈夫になってたのね。