NonSoft

ファイル出力方法のいろいろ(C#.NET)


 サンプル(ソース/コード)
<このサンプルの概要>
ファイルをいろんな方法で書込むサンプルです。いろんな方法とは以下の通りです。

1.文字コード(SJIS,JIS,EUC,UNICODE,UTF7,UTF8)を指定してテキスト形式でファイルを書込む
  (1)ファイル全部を一括で(一気に)書込む
  (2)ファイルを一行ごとに書込む
  (3)ファイルを一文字ごとに書込む

2.バイナリ形式でファイルで書込む
  (1)ファイル全部を一括で(一気に)書込む
  (2)ファイルを一バイトごとに書込む

文字コードを指定してテキスト形式でファイルを書込む(全部一気に書込む)
文字コードを指定してテキスト形式でファイルを書込む(一行ずつ書込む)
文字コードを指定してテキスト形式でファイルを書込む(一文字ずつ書込む)
バイナリ形式でファイルで読込む(全部一気に書込む)
バイナリ形式でファイルで読込む(一バイトずつ書込む)

ファイル入力の方法のサンプルはこちらです。
ファイル入力方法のいろいろ(C#.NET)

C#.NETのサンプルはこちらです。
ファイル出力方法のいろいろ(VB.NET)

文字コード関係のその他のツールやサンプルはこちらです。
文字コード変換/文字コード判定


/// <summary> /// テキストファイル出力(ファイル全部を一括で書込む) /// </summary> /// <param name="fpath">ファイルPATH</param> /// <param name="cname">文字コード名</param> /// <param name="dt">出力文字列データ</param> /// <主な文字コード名> /// SJIS="SHIFT-JIS" /// JIS="ISO-2022-JP" /// EUC="EUC-JP" /// UNICODE="UNICODE" /// UTF7="UTF-7" /// UTF8="UTF-8" public void WriteText_A(String fpath, String cname, String dt) { System.IO.StreamWriter sw = null; try { // BOM無しエンコーディング作成 System.Text.Encoding enc = System.Text.Encoding.GetEncoding(cname); if( cname == "UTF-8" ){ // BOM無し enc = new System.Text.UTF8Encoding(false); } else if (cname == "UNICODE") { // BOM無し(リトルエンディアン) enc = new System.Text.UnicodeEncoding(false, false); } sw = new System.IO.StreamWriter(fpath, false, enc); sw.Write(dt); } catch (Exception ex) { throw ex; } finally { if (sw != null) sw.Close(); } }
/// <summary> /// テキストファイル出力(ファイルを一行ずつ書込む) /// </summary> /// <param name="fpath">ファイルPATH</param> /// <param name="cname">文字コード名</param> /// <param name="dt">出力文字列データ</param> /// <主な文字コード名> /// SJIS="SHIFT-JIS" /// JIS="ISO-2022-JP" /// EUC="EUC-JP" /// UNICODE="UNICODE" /// UTF7="UTF-7" /// UTF8="UTF-8" public void WriteText_L(String fpath, String cname, String dt) { System.IO.StreamWriter sw = null; try { // BOM無しエンコーディング作成 System.Text.Encoding enc = System.Text.Encoding.GetEncoding(cname); if (cname == "UTF-8") { // BOM無し enc = new System.Text.UTF8Encoding(false); } else if (cname == "UNICODE") { // BOM無し(リトルエンディアン) enc = new System.Text.UnicodeEncoding(false, false); } sw = new System.IO.StreamWriter(fpath, false, enc); // 一行ずつ書込むサンプルなので // とりあえず改行で分割して一行ずつ出力--- dt = dt.Replace("\r\n", "\n"); String[] ln = dt.Split('\n'); // --------------------------------------- for (int i = 0; i <= ln.GetLength(0) - 1; i++) { sw.WriteLine(ln[i]); } } catch (Exception ex) { throw ex; } finally { if (sw != null) sw.Close(); } }
/// <summary> /// テキストファイル出力(ファイルを一文字ずつ書込む) /// </summary> /// <param name="fpath">ファイルPATH</param> /// <param name="cname">文字コード名</param> /// <param name="dt">出力文字列データ</param> /// <主な文字コード名> /// SJIS="SHIFT-JIS" /// JIS="ISO-2022-JP" /// EUC="EUC-JP" /// UNICODE="UNICODE" /// UTF7="UTF-7" /// UTF8="UTF-8" public void WriteText_C(String fpath, String cname, String dt) { System.IO.StreamWriter sw = null; try { // BOM無しエンコーディング作成 System.Text.Encoding enc = System.Text.Encoding.GetEncoding(cname); if (cname == "UTF-8") { // BOM無し enc = new System.Text.UTF8Encoding(false); } else if (cname == "UNICODE") { // BOM無し(リトルエンディアン) enc = new System.Text.UnicodeEncoding(false, false); } sw = new System.IO.StreamWriter(fpath, false, enc); for (int i = 0; i <= dt.Length - 1; i++) { sw.Write(dt.Substring(i, 1)); } } catch (Exception ex) { throw ex; } finally { if (sw != null) sw.Close(); } }
/// <summary> /// バイナリファイル出力(ファイル全部を一括で書込む) /// </summary> /// <param name="fpath">ファイルPATH</param> /// <param name="dt">出力バイナリデータ</param> public void WriteBinary_A(String fpath, Byte[] dt) { System.IO.Stream sw = null; System.IO.BinaryWriter bw = null; try { sw = System.IO.File.Open(fpath, System.IO.FileMode.Create, System.IO.FileAccess.Write); bw = new System.IO.BinaryWriter(sw); bw.Write(dt); } catch (Exception ex) { throw ex; } finally { if (bw != null) bw.Close(); if (sw != null) sw.Close(); } }
/// <summary> /// バイナリファイル出力(ファイルを一バイトずつ書込む) /// </summary> /// <param name="fpath">ファイルPATH</param> /// <param name="dt">出力バイナリデータ</param> public void WriteBinary_B(String fpath, Byte[] dt) { System.IO.Stream sw = null; System.IO.BinaryWriter bw = null; try { sw = System.IO.File.Open(fpath, System.IO.FileMode.Create, System.IO.FileAccess.Write); bw = new System.IO.BinaryWriter(sw); for(int i = 0 ;i<= dt.GetLength(0) - 1;i++){ bw.Write(dt[i]); } } catch (Exception ex) { throw ex; } finally { if (bw != null) bw.Close(); if (sw != null) sw.Close(); } }