LoginSignup
4
4

More than 5 years have passed since last update.

Kotlin で手軽にテキストファイルを読み込む

Posted at

概要

  • Kotlin Standard Library に含まれている java.io.File.readText を使用
  • 文字エンコーディング UTF-8, EUC-JP, Shift_JIS のテキストファイルを読み込む

サンプルコード cat.kts

import java.io.File

val pathUtf8  = args[0]
val pathEucjp = args[1]
val pathShiftjis = args[2]

println("UTF-8 : ${pathUtf8}")
println(File(pathUtf8).readText(Charsets.UTF_8))

println("EUC-JP : ${pathEucjp}")
println(File(pathEucjp).readText(charset("EUC-JP")))

println("Shift_JIS : ${pathShiftjis}")
println(File(pathShiftjis).readText(charset("Shift_JIS")))

println("windows-31j : ${pathShiftjis}")
println(File(pathShiftjis).readText(charset("windows-31j")))

読み込むテキストファイル (UTF-8, EUC-JP, Shift_JIS) を用意

UTF-8, EUC-JP, Shift_JIS のテキストファイルを用意。Shift_JIS (Windows-31J, CP932: Microsoft Windows Codepage 932) のファイルには文字化けしがちな文字を入れておく。

$ cat utf8.txt 
さんぷる
サンプル
SANNPURU

$ nkf -E eucjp.txt 
さんぷる
サンプル
SANNPURU

$ nkf -S shiftjis.txt 
さんぷる
サンプル
SANNPURU
①㈱髙

サンプル実行結果

サンプルコードを実行。

$ kotlinc -script cat.kts utf8.txt eucjp.txt shiftjis.txt
UTF-8 : utf8.txt
さんぷる
サンプル
SANNPURU

EUC-JP : eucjp.txt
さんぷる
サンプル
SANNPURU

Shift_JIS : shiftjis.txt
さんぷる
サンプル
SANNPURU
�@�棋�

windows-31j : shiftjis.txt
さんぷる
サンプル
SANNPURU
①㈱髙

Shift_JIS のテキストファイルは、charset に "Shift_JIS" を指定したら見事に文字化けしている。 "windows-31j" を指定すると文字化けしない。

動作確認環境

Kotlin 1.3.0 + Java 11.0.1 + macOS Mojave 10.14.1

$ kotlin -version
Kotlin version 1.3.0-release-212 (JRE 11.0.1+13-LTS)

$ kotlinc -version
info: kotlinc-jvm 1.3.0 (JRE 11.0.1+13-LTS)

$ java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

$ uname -mrsv
Darwin 18.2.0 Darwin Kernel Version 18.2.0: Fri Oct  5 19:41:49 PDT 2018; root:xnu-4903.221.2~2/RELEASE_X86_64 x86_64

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.1
BuildVersion:   18B75

参考資料

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4