Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ShiftJIS を使ってファイルに書き込む・ファイルを読み込む (Kotlin/JVM)

More than 1 year has passed since last update.

Kotlin (Java) を使ってファイルに出力する時に、 SJIS を使ってファイル出力やファイル読み込みをする場合の方法です。

ファイルに書き込む場合

FileWriter を使う

import java.io.FileWriter
import java.nio.charset.Charset

FileWriter(fileName, Charset.forName("SJIS")).use {
    it.write("...")
}

OutputStreamWriter を使う

import java.io.FileOutputStream
import java.io.OutputStreamWriter
import java.nio.charset.Charset

OutputStreamWriter(
    FileOutputStream(fileName, true), Charset.forName("SJIS").displayName()
).use {
    it.write("...")
}

専用クラスを作る

もし、SJISで出力する場面が多いのなら、次のようなクラスを作ってしまうと便利です。

import java.io.FileOutputStream
import java.io.OutputStreamWriter
import java.nio.charset.Charset

class SjisFileWriter(fileName: String, append: Boolean) : OutputStreamWriter(
    FileOutputStream(fileName, true), Charset.forName("SJIS").displayName()
)

ファイルを読み込む場合

FileReader を使う

InputStreamWriter を使う

専用クラスを作る

import java.io.FileInputStream
import java.io.InputStreamReader
import java.nio.charset.Charset

class SjisFileReader(fileName: String) :
    InputStreamReader(FileInputStream(fileName), Charset.forName("SJIS")) {
}
KenjiOtsuka
Kotlin じゃないとやる気の出ないエンジニアです。 Qiita はメモとして使っています。 WEB+DB で特集書きました。
http://improve-future.com
eys-style
人生を豊かにする仲間と文化・芸術を慈しみながら生きるコミュニティをテクノロジーで実現する。
http://eys-style.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away