■ テキストファイルの読み書き

テキストファイルの読み書きについて VB6VB.NET の記述サンプルです
VB.NET では シフト JIS 以外の文字エンコーディングで記述されたファイルの読み書きも容易になりました

仕様的には VB6VB.NET で同じだと思っていたのですが 実は大きな違いがありました
違いがあったのは LineInput 関数で VB6 では キャリッジリターン (Chr(13)) または改行コード (Chr(13)+Chr(10)) の直前
までの文字列を読み込むようになっていましたが VB.NET では これに加えて ラインフィード (Chr(10)) も対象になっています
MSDN では ラインフィードが加えられたことについて 記述がありませんでした
VB6
書き込みの後に改行を行わない場合は 文字列の最後に ; (セミコロン) をつけます

Dim st_buff As String
Dim i_fnum As Integer

'' テキストファイルの読み込み
i_fnum = FreeFile()
Open "C:\test.txt" For Input As i_fnum
Do While Not EOF(i_fnum)
    LineInput #i_fnum, st_buff
Loop
Close i_fnum

'' テキストファイルの書き込み
Open "C:\test.txt" For Output As i_fnum
Print #i_fnum, "ABC";
Print #i_fnum, "DEF"
Close i_fnum

VB.NET
VB.NET でもファイルの読み込みについての記述はほとんど変更ないようです
ファイルの書き込みについては 書き込みの後に改行を行うかどうかで Print または PrintLine 関数を使い分けます

しかし 実はここで使用されているようなファイルの I/O 関連の関数は すべて FileSystem モジュールに含まれており 正式には
Microsoft.VisualBasic.FileSystem.FreeFile などの記述が省略されているのです

Dim st_buff As String
Dim i_fnum As Integer

'' テキストファイルの読み込み
i_fnum = FreeFile()
FileOpen(i_fnum, "C:\test.txt", OpenMode.Input)
Do While Not EOF(i_fnum)
    st_buff = LineInput(i_fnum)
Loop
FileClose(i_fnum)

'' テキストファイルの書き込み
FileOpen(i_fnum, "c:\test.txt", OpenMode.Output)
Print(i_fnum, "ABC")
PrintLine(i_fnum, "DEF")
FileClose(i_fnum)

VB.NET でテキストファイルを読み書きするときに 容易にできるようになったのが シフト JIS 以外の文字エンコーディングで記述さ
れたファイルを扱うことです
下記の例では UNIX サーバから取得したような EUC で記述されたファイルを読み書きしています
※ 書き込み時に改行をラインフィード (Chr(10)) にすることはできないようなのですが Write メソッド で対応できます

Dim reader As StreamReader
Dim writer As StreamWriter
Dim st_buff As String

'' ファイルの読み込み
reader = New StreamReader("c:\test.txt", System.Text.Encoding.GetEncoding("EUC-JP"))
Do While Not reader.Peek() = -1
    st_buff = reader.ReadLine()
Loop
reader.Close()
reader = Nothing

'' ファイルの書き込み
writer = New StreamWriter("c:\test.txt", False, System.Text.Encoding.GetEncoding("EUC-JP"))
writer.Write("あいうえお")
writer.WriteLine("かきくけこ")    '' 改行をLFにするなら  writer.Write("かきくけこ" & vbLf)
writer.Close()
writer = Nothing

上記で使用している StreamReader などは 名前空間 System.IO に存在します
上記の記述で実行するためには Imports System.IO のような記述を行うなどする必要があります