NonSoft

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


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

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

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

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

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

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

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


''' <summary> ''' テキストファイル出力(ファイル全部を一括で書込む) ''' </summary> ''' <param name="fpath">ファイルPATH</param> ''' <param name="cname">文字コード名</param> ''' <param name="dt">出力文字列データ</param> ''' <remarks> ''' <主な文字コード名> ''' SJIS="SHIFT-JIS", ''' JIS="ISO-2022-JP", ''' EUC="EUC-JP", ''' UNICODE="UNICODE", ''' UTF7="UTF-7", ''' UTF8="UTF-8" ''' </remarks> Public Sub WriteText_A( _ ByVal fpath As String, ByVal cname As String, ByVal dt As String) Dim sw As System.IO.StreamWriter = Nothing Try ' BOM無しエンコーディング作成 Dim enc As System.Text.Encoding = _ System.Text.Encoding.GetEncoding(cname) If cname = "UTF-8" Then ' BOM無し enc = New System.Text.UTF8Encoding(False) ElseIf cname = "UNICODE" Then ' BOM無し(リトルエンディアン) enc = New System.Text.UnicodeEncoding(False, False) End If sw = New System.IO.StreamWriter(fpath, False, enc) sw.Write(dt) Catch ex As Exception Throw ex Finally If sw Is Nothing = False Then sw.Close() End Try End Sub
''' <summary> ''' テキストファイル出力(ファイルを一行ずつ書込む) ''' </summary> ''' <param name="fpath">ファイルPATH</param> ''' <param name="cname">文字コード名</param> ''' <param name="dt">出力文字列データ</param> ''' <remarks> ''' <主な文字コード名> ''' SJIS="SHIFT-JIS", ''' JIS="ISO-2022-JP", ''' EUC="EUC-JP", ''' UNICODE="UNICODE", ''' UTF7="UTF-7", ''' UTF8="UTF-8" ''' </remarks> Public Sub WriteText_L( _ ByVal fpath As String, ByVal cname As String, ByVal dt As String) Dim sw As System.IO.StreamWriter = Nothing Try ' BOM無しエンコーディング作成 Dim enc As System.Text.Encoding = _ System.Text.Encoding.GetEncoding(cname) If cname = "UTF-8" Then ' BOM無し enc = New System.Text.UTF8Encoding(False) ElseIf cname = "UNICODE" Then ' BOM無し(リトルエンディアン) enc = New System.Text.UnicodeEncoding(False, False) End If sw = New System.IO.StreamWriter(fpath, False, enc) ' 一行ずつ書込むサンプルなので ' とりあえず改行で分割して一行ずつ出力--- dt = dt.Replace(vbCrLf, vbLf) Dim ln As String() = dt.Split(vbLf) ' --------------------------------------- For i As Integer = 0 To ln.GetLength(0) - 1 sw.WriteLine(ln(i)) Next Catch ex As Exception Throw ex Finally If sw Is Nothing = False Then sw.Close() End Try End Sub
''' <summary> ''' テキストファイル出力(ファイルを一文字ずつ書込む) ''' </summary> ''' <param name="fpath">ファイルPATH</param> ''' <param name="cname">文字コード名</param> ''' <param name="dt">出力文字列データ</param> ''' <remarks> ''' <主な文字コード名> ''' SJIS="SHIFT-JIS", ''' JIS="ISO-2022-JP", ''' EUC="EUC-JP", ''' UNICODE="UNICODE", ''' UTF7="UTF-7", ''' UTF8="UTF-8" ''' </remarks> Public Sub WriteText_C( _ ByVal fpath As String, ByVal cname As String, ByVal dt As String) Dim sw As System.IO.StreamWriter = Nothing Try ' BOM無しエンコーディング作成 Dim enc As System.Text.Encoding = _ System.Text.Encoding.GetEncoding(cname) If cname = "UTF-8" Then ' BOM無し enc = New System.Text.UTF8Encoding(False) ElseIf cname = "UNICODE" Then ' BOM無し(リトルエンディアン) enc = New System.Text.UnicodeEncoding(False, False) End If sw = New System.IO.StreamWriter(fpath, False, enc) For i As Integer = 0 To dt.Length - 1 sw.Write(dt.Substring(i, 1)) Next Catch ex As Exception Throw ex Finally If sw Is Nothing = False Then sw.Close() End Try End Sub
''' <summary> ''' バイナリファイル出力(ファイル全部を一括で書込む) ''' </summary> ''' <param name="fpath">ファイルPATH</param> ''' <param name="dt">出力バイナリデータ</param> ''' <remarks></remarks> Public Sub WriteBinary_A(ByVal fpath As String, ByVal dt As Byte()) Dim sw As System.IO.Stream = Nothing Dim bw As System.IO.BinaryWriter = Nothing 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 ex As Exception Throw ex Finally If bw Is Nothing = False Then bw.Close() If sw Is Nothing = False Then sw.Close() End Try End Sub
''' <summary> ''' バイナリファイル出力(ファイルを一バイトずつ書込む) ''' </summary> ''' <param name="fpath">ファイルPATH</param> ''' <param name="dt">出力バイナリデータ</param> ''' <remarks></remarks> Public Sub WriteBinary_B(ByVal fpath As String, ByVal dt As Byte()) Dim sw As System.IO.Stream = Nothing Dim bw As System.IO.BinaryWriter = Nothing Try sw = System.IO.File.Open(fpath, _ System.IO.FileMode.Create, _ System.IO.FileAccess.Write) bw = New System.IO.BinaryWriter(sw) For i As Integer = 0 To dt.GetLength(0) - 1 bw.Write(dt(i)) Next Catch ex As Exception Throw ex Finally If bw Is Nothing = False Then bw.Close() If sw Is Nothing = False Then sw.Close() End Try End Sub