Visual Basic サンプル集 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
ファイルから文字列を読み込む
2021/10/10
ファイル全体を一度に読み込む
この例ではUTF-8 として読み込みます。
Dim content As String = IO.File.ReadAllText("C:\temp\test.txt")
メモ:ファイルに複数行が含まれる場合は、改行付きの1つの文字列として読み込みます。
これでもできます。
Using reader As New IO.StreamReader("C:\temp\test.txt")
Dim content As String = reader.ReadToEnd()
End Using
shift_jisとして読み込む
この例ではShift_JIS としてファイル全体を読み込みます。
#If NETCOREAPP Then
'.NET Frameworkで実行している場合、この#If ~ #End If 間は無視されます。
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
#End If
Dim sjis = System.Text.Encoding.GetEncoding("shift_jis")
Dim content As String = IO.File.ReadAllText("C:\temp\test.txt",sjis)
メモ:ファイルに複数行が含まれる場合は、改行を含む1つの文字列として読み込みます。
これでもできます。
#If NETCOREAPP Then
'.NET Frameworkで実行している場合、この#If ~ #End If 間は無視されます。
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
#End If
Dim sjis = System.Text.Encoding.GetEncoding("shift_jis")
Using reader As New System.IO.StreamReader("C:\temp\test.txt", sjis)
Dim content As String = reader.ReadToEnd()
End Using
メモ:ファイルに複数行が含まれる場合は、改行を含む1つの文字列として読み込みます。
ファイル全体を一度に読み込んで、行ごとに取得する
この例ではUTF-8 として読み込みます。
Dim lines As String() = System.IO.File.ReadAllLines("C:\temp\test.txt")
'以下はファイルに2行以上ないとエラーになります。
Debug.WriteLine($"{lines.Length}行ありました。")
'Debug.WriteLine(lines.Length & "行ありました。") ' ←VB2013以前の場合
Debug.WriteLine("1行目は:" & lines(0))
Debug.WriteLine("2行目は:" & lines(1))
Debug.WriteLine("最後の行は:" & lines.Last())
1行ずつ3行目まで読み込む
この例ではUTF-8 として読み込みます。
Using reader As New IO.StreamReader("C:\temp\test.txt")
Dim line1 As String = reader.ReadLine() '1行目を読み込みます。
Dim line2 As String = reader.ReadLine() '次の行を読み込みます。
Dim line3 As String = reader.ReadLine() '次の行を読み込みます。
End Using
メモ:最終行を読み込んだ後 ReadLine を呼び出すと Nothing を返します。
1行ずつ最後まで読み込む
この例ではUTF-8 として読み込みます。
Using reader As New IO.StreamReader("C:\temp\test.txt")
Do Until reader.EndOfStream
Dim line As String = reader.ReadLine()
Debug.WriteLine(line)
Loop
End Using
1文字ずつ読み込む
次の例は、ファイルから1文字ずつ取得して、その文字をデバッグ出力に書き込みます。この例ではUTF-8 として読み込みます。
Using reader As New IO.StreamReader("C:\temp\test.txt")
Do Until reader.EndOfStream
Dim code As Integer = reader.Read()
Dim letter As Char = Convert.ToChar(code)
Dim st As String = letter.ToString()
Debug.WriteLine(st)
Loop
End Using
メモ:ここでいう「文字」とはUnicode基本多言語面のコードポイントを指しているようで、たとえば、UTF-16でサロゲートペアとして表される1文字(例として𩸽)はこのプログラムでは判別できない2つの文字として出力されるようです。