工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java OutputStreamWriter完全ガイド:文字からバイトへの変換と実践例

Java OutputStreamWriterクラス

JavaのOutputStreamWriterを使用して文字ストリームとバイトストリームを橋渡しする方法を、実例コードスニペットで解説します。

java.ioのOutputStreamWriterクラスは、文字データをバイトデータに変換するブリッジとして機能します。抽象Writerクラスを拡張し、FileOutputStreamなどのバイトストリームと連携します。

Unicode文字の一部は複数バイトにまたがるため、OutputStreamWriterはバイトストリームへの書き込み時に文字エンコーディングが正しく適用されることを保証します。


OutputStreamWriterの作成

必要なクラスをインポート:

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

ファイルをターゲットとするFileOutputStreamをインスタンス化し、OutputStreamWriterでラップします。デフォルトコンストラクタはプラットフォームのデフォルトcharsetを使用しますが、環境間の一貫性のためにUTF-8やUTF-16を明示的に設定できます:

// デフォルトcharset
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("output.txt"));
// 明示的UTF-8
OutputStreamWriter writerUtf8 = new OutputStreamWriter(
    new FileOutputStream("output_utf8.txt"), Charset.forName("UTF-8"));

OutputStreamWriterの主要メソッド

OutputStreamWriterはWriterからのすべての抽象メソッドを実装。最も一般的なメソッド:

write()メソッド


例:テキストをファイルに書き込み

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String[] args) {
        String data = "This is a line of text inside the file.";
        try {
            FileOutputStream fileOut = new FileOutputStream("output.txt");
            OutputStreamWriter writer = new OutputStreamWriter(fileOut, Charset.forName("UTF-8"));
            writer.write(data);
            writer.flush();
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

このプログラムを実行すると、output.txtが作成され以下が含まれます:

This is a line of text inside the file.

getEncoding()メソッド

getEncoding()で現在使用中のcharsetを取得:

FileOutputStream file = new FileOutputStream("output.txt");
OutputStreamWriter defaultWriter = new OutputStreamWriter(file);
OutputStreamWriter utf8Writer = new OutputStreamWriter(file, Charset.forName("UTF-8"));
System.out.println("デフォルトエンコーディング: " + defaultWriter.getEncoding());
System.out.println("UTF-8エンコーディング: " + utf8Writer.getEncoding());

出力

デフォルトエンコーディング: Cp1252
UTF-8エンコーディング: UTF-8

charset未指定時はプラットフォームデフォルトが返されます。明示的にcharsetを設定すると一貫した動作が保証されます。

ヒント: 精密な制御にはCharset.forName()を使用。詳細は公式Java Charset APIを参照。


close()メソッド

システムリソースを解放するために常にclose()を呼び出します。閉じた後はライターを再利用できません。


その他の便利なメソッド

メソッド説明
flush()バッファされたデータを即座に基盤ストリームに書き出し
append()文字や文字列をライターに便利に追加

完全なリファレンスは公式Java OutputStreamWriter Javadocを参照。

Java

  1. Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
  2. Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
  3. Java継承のマスター:概念、種類、実践例
  4. Java Staticネストクラスの理解:用法、違い、実例
  5. Java無名インナークラス完全ガイド:定義、構文、実践例
  6. Javaシングルトンパターン完全解説:安全な実装と活用法
  7. Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
  8. Java ArrayList完全マスター:操作・メソッド・ベストプラクティス
  9. Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
  10. Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
  11. Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除