Back to Top

プログラムの覚書

Category: ファイル

VB.NET シーケンシャルファイルの読み込み・書き込み

シーケンシャルファイルの読み込み、書き込みについて記載します。

シーケンシャルファイルは、通常テキストファイルなのでテキストファイルの読み込み、書き込み、と同じようなものです。

以下には、昔ながらのファイル番号を使用して、ファイルをオープンし処理する方法を記載します。

シーケンシャルファイルを読み込む

Dim dtList As List(Of String) = New List(Of String)

Dim FilePath As String = "C:\work\mysfile.txt"

Dim FileNo As Integer = FileSystem.FreeFile
FileSystem.FileOpen(FileNo, FilePath, OpenMode.Input)

Dim s As String = ""
Do While (Not FileSystem.EOF(FileNo))
    FileSystem.Input(FileNo, s)
    dtList.Add(s)
Loop

FileSystem.FileClose(FileNo)

 

シーケンシャルファイルを書き込む

Dim dtList As List(Of String) = New List(Of String)
dtList.Add("AAA")
dtList.Add("BBB")
dtList.Add("CCC")
Dim FilePath2 As String = "C:\work\mysfile2.txt"

Dim FileNo2 As Integer = FileSystem.FreeFile
FileSystem.FileOpen(FileNo2, FilePath2, OpenMode.Output)

For Each s2 As String In dtList
    FileSystem.PrintLine(FileNo2, s2)
Next

FileSystem.FileClose(FileNo2)

 

VB.NET テキストファイルの書き込み

テキストファイルの書き込み方法について記載します。

File.WriteAllLines メソッドを使用し 文字列をテキストファイルに書き込む

Dim str As String = "AAA"

Dim sFilePath As String = "C:\work\myfile.txt"
 
'文字列をテキストファイルに全て書き込む
System.IO.File.WriteAllText(sFilePath, str, System.Text.Encoding.Default)

 

File.WriteAllLines メソッドを使用し 文字列配列をテキストファイルに書き込む

Dim lines As String() = {"AAA", "BBB", "CCC"}

Dim sFilePath As String = "C:\work\myfile.txt"

'配列の要素ごとに、改行を追加してテキストファイルに書き込む
System.IO.File.WriteAllLines(sFilePath, lines, System.Text.Encoding.Default)

 

StreamWriter.Write メソッドを使用し 文字列をテキストファイルに書き込む

Dim str As String = "AAA"

Dim sFilePath As String = "C:\work\myfile.txt"

'文字列をテキストファイルに全て書き込む
Dim sw As New System.IO.StreamWriter(sFilePath, False, System.Text.Encoding.Default)
sw.Write(str)
sw.Close()

※StreamWriter()の2番目のパラメータは、追加、上書き、を指定します。

 

StreamWrite.WriteLine メソッドを使用し 文字列配列をテキストファイルに書き込む

Dim lines As String() = {"AAA", "BBB", "CCC"}

Dim sFilePath As String = "C:\work\myfile.txt"

Dim sw As New System.IO.StreamWriter(sFilePath, False, System.Text.Encoding.Default)

'配列の要素ごとに、改行を追加してテキストファイルに書き込む
For Each s As String In lines
    sw.WriteLine(s)
Next
sw.Close()