VB.NETのテキストファイルの読み書きのサンプルです。
(確認環境:Microsoft Visual Studio Community 2019)
目次
サンプル | StreamReaderクラスで読み込む |
StreamWriterクラスで書き込む |
StreamReaderクラスで読み込む
Public Sub New (path As String, encoding As Encoding) |
- ファイルの文字を読み込みます。
- 上記は、StreamReaderクラスのコンストラクタです。1つめの引数はpathで、2つめの引数はエンコーディングです。2つめの引数を省略するとUTF-8になります。
- 以下は、MicrosoftのStreamReaderクラスのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.streamreader?view=netcore-3.1
ファイルを1行ずつ読み込むサンプルです。
Imports System.IO
Imports System.Text
Module Module1
Sub Main()
Dim path = "D:\Test1\test1.csv"
Dim list As New List(Of String)
Dim line As String = ""
Try
Using reader As New StreamReader(
path, Encoding.GetEncoding("Shift_JIS"))
line = reader.ReadLine()
While line IsNot Nothing
list.Add(line) '1行ずつセット
line = reader.ReadLine()
End While
End Using
For Each b As String In list
Console.WriteLine(b) '1行ずつ表示
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
11行目は、StreamReaderのインスタンスを生成しています。
usingステートメントは、配下のブロックの処理が終了したときにリソースを解放するDispose()が呼ばれるのでCloseメソッドは不要です。
14,18行目は、1行読み込んでいます。
15行目は、While文で読み込んだ行がNothingになるまでループします。
17行目は、読み込んだ行をリストにセットしています。
23行目は、1行ずつ表示されます。
StreamWriterクラスで書き込む
Public Sub New (path As String, append As Boolean, encoding As Encoding) |
- ファイルに文字を書き込みます。
- 上記は、StreamReaderクラスのコンストラクタです。1つめの引数はpathで、2つめの引数はtrueが追記でfalseが新規書き込み、3つめの引数はエンコーディングです。省略するとUTF-8になります。
- 以下は、MicrosoftのStreamWriterクラスのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.streamwriter?view=netcore-3.1
リストの値をファイルに書き込むサンプル
Imports System.IO
Imports System.Text
Module Module1
Sub Main()
Dim path = "D:\Test1\test2.csv"
Dim list As New List(Of String)(New String() {"赤", "黄", "青"})
Try
Using writer As New StreamWriter(
path, True, Encoding.GetEncoding("Shift_JIS"))
For Each line As String In list
writer.WriteLine(line) '1行ずつ書き込み
Next
End Using
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
11行目は、StreamWriterのインスタンスを生成しています。
12行目のTrueは追記するという意味です。Falseにすると都度新規作成されます。
usingステートメントは、配下のブロックの処理が終了したときにリソースを解放するDispose()が呼ばれるのでCloseメソッドは不要です。
14行目は、リストの要素分ループします。
15行目は、WriteLineメソッドで1行ずつ書き込みをしています。
書き込み結果は以下のように3行になります。
赤
黄
青
文字列をファイルに書き込むサンプル
改行する場合はvbCrLfを使用します。
Imports System.IO
Imports System.Text
Module Module1
Sub Main()
Dim path = "D:\Test1\test2.txt"
Try
Using writer As New StreamWriter(
path, True, Encoding.GetEncoding("Shift_JIS"))
writer.WriteLine("あいうえお" + vbCrLf + "かきくけこ")
End Using
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
関連の記事
VB.NET ファイルの一覧を取得するサンプル
VB.NET ファイルの存在/移動/コピー/削除のサンプル
VB.NET フォルダの存在/移動/コピー/削除のサンプル