<このサンプルの概要>
ファイルをいろんな方法で書込むサンプルです。いろんな方法とは以下の通りです。
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