TEXT File の出力

01234ABCDEFGabcdefg
012ABCabc
あいうえお
亜井宇絵尾

C# の StreamWriter で TEXT データを File に出力します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. TEXT File とは、C言語やC#のソースプログラムのように、文字コードを使って書かれたファイルのことを言います。
    TEXT File はメモ帳や Text Editor を使って簡単に読んだり書いたりすることが出来ます。
    ところが、文字コードなるものが曲者で (^_^;) これが関係すると一筋縄では行きません。
    文字コードの説明は Program Guid を参照して下さい。
    C# ではコード変換の機能が強化されていて、現在使われている殆どのコードに対応できるようになっています。
  2. このプログラムを実行するときは、事前に "C:\\data\\" のフォルダーを作成しておいて下さい。
    プログラムを実行すると、このフォルダーに work.txt のファイルが作成されます。
    もちろん実行環境に合わせて、下記の行を修正してもかまいません。
    "C:\\data\\work.txt"
  3. Encoding.GetEncoding("Shift_JIS") は、内部コードを Shift_JIS に変換してファイルに書き込みます。
  4. writer.WriteLine() では、文字列の後に改行コード(\r\n)を付加して書き込みます。
    改行コードを付加したく無いときは writer.Write() を使って下さい。
    作成されたファイルは、メモ帳などで内容を確認することができます。
  5. ソースコードです。
    /**************************************************/
    /*★ TEXT データをファイルに出力する    前田 稔 ★*/
    /**************************************************/
    using System.IO;    // for File, StreamReader
    using System.Text;  // for Encoding
    
    class TextFileWrite
    {
        public static int Main()
        {
            string file_name = "C:\\data\\work.txt";
            StreamWriter writer = new StreamWriter(file_name,
                                                   false,  // 上書き (true=追加)
                                                   Encoding.GetEncoding("Shift_JIS"));
    
            writer.WriteLine("01234ABCDEFGabcdefg");
            writer.WriteLine("012ABCabc");
            writer.WriteLine("あいうえお");
            writer.WriteLine("亜井宇絵尾");
            writer.Close() ;
            return 0;
        }
    }
    
  6. C/C++ の Text File 出力は TEXT File の出力 を参照して下さい。
    Text File の入力は TEXT File の入力 を参照して下さい、
    アプリの例は Text Editor を参照して下さい、

【演習】

  1. 同じ TEXT を Unicode で書き込んでみましょう。
    次の行を変更して下さい。
    //Encoding.GetEncoding("Shift_JIS"));
    Encoding.GetEncoding("utf-16"));
  2. 次に EUC コードで書き込んでみましょう。
    次の行を変更して下さい。
    //Encoding.GetEncoding("Shift_JIS"));
    Encoding.GetEncoding("EUC-JP"));
  3. 作成されたファイルをメモ帳(文字コード ANSI)で開くと、文字が化けているでしょう。
    メモ帳(notepad.exe)を使うときは、文字コードを正しく選択して下さい。 (^_^;)

BOM(byte order mark)

  1. BOM とはテキストファイルの先頭に格納される文字コードを示すIDです。
    文字コード BOM 説明
    utf-16 FFFE 先頭2バイトが BOM です
    utf-8 EFBBBF先頭3バイトが BOM です
    utf-8(BOM無し) BOM は格納されていません
  2. BOM が格納されていると Encoding で間違った設定をしても、文字化けすることなく正しく読むことができます。
    utf-8 には BOM 無しと有りがあるのですが、Windows の utf-16 では、無しのファイルは見かけません。
    "Shift_JIS" は Windows 以前からの古い形式で BOM とは関係ありません。
  3. utf-8 に BOM を設定するときは、次のようにプログラムします。
    System.IO.StreamWriter sw = new System.IO.StreamWriter(
        @"C:\test.txt", false, System.Text.Encoding.UTF8);
    sw.Write("こんにちは。");
    sw.Close();
    
  4. BOM 無しと有りを確認するときは Binary Editor などで調べて下さい。

超初心者のプログラム入門(C# Frame Work)