ヘッダー
Visual Basic サンプル集
VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022対応

ファイルから文字列を読み込む

2021/10/10

→ C# のサンプルに切り替える

 

ファイル全体を一度に読み込む

この例ではUTF-8 として読み込みます。

VB.NET 2002 VB.NET 2003 VB2005 VB2008 VB2010 VB2012 VB2013 VB2015 VB2017 VB2019 Visual Studio 2022


Dim content As String = IO.File.ReadAllText("C:\temp\test.txt")

メモ:ファイルに複数行が含まれる場合は、改行付きの1つの文字列として読み込みます。

 

これでもできます。

VB2005 VB2008 VB2010 VB2012 VB2013 VB2015 VB2017 VB2019 Visual Studio 2022

Using reader As New IO.StreamReader("C:\temp\test.txt")
    Dim content As String = reader.ReadToEnd()
End Using

 

 

shift_jisとして読み込む

この例ではShift_JIS としてファイル全体を読み込みます。

VB.NET 2002 VB.NET 2003 VB2005 VB2008 VB2010 VB2012 VB2013 VB2015 VB2017 VB2019 Visual Studio 2022

#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つの文字列として読み込みます。

 

これでもできます。

VB2005 VB2008 VB2010 VB2012 VB2013 VB2015 VB2017 VB2019 Visual Studio 2022

#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 として読み込みます。

VB.NET 2002 VB.NET 2003 VB2005 VB2008 VB2010 VB2012 VB2013 VB2015 VB2017 VB2019 Visual Studio 2022

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())

Debug.WriteLineが表示される場所

 

 

1行ずつ3行目まで読み込む

この例ではUTF-8 として読み込みます。

VB2005 VB2008 VB2010 VB2012 VB2013 VB2015 VB2017 VB2019 Visual Studio 2022

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 として読み込みます。

VB2005 VB2008 VB2010 VB2012 VB2013 VB2015 VB2017 VB2019 Visual Studio 2022

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

Debug.WriteLineが表示される場所

 

 

1文字ずつ読み込む

次の例は、ファイルから1文字ずつ取得して、その文字をデバッグ出力に書き込みます。この例ではUTF-8 として読み込みます。

VB2005 VB2008 VB2010 VB2012 VB2013 VB2015 VB2017 VB2019 Visual Studio 2022

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

Debug.WriteLineが表示される場所

メモ:ここでいう「文字」とはUnicode基本多言語面のコードポイントを指しているようで、たとえば、UTF-16でサロゲートペアとして表される1文字(例として𩸽)はこのプログラムでは判別できない2つの文字として出力されるようです。