web-dev-qa-db-ja.com

VB.NETで1行ずつファイルを読む

次のコードは、ファイルを1行ずつ読み取るために使用されます。

これは非常に初期のバージョンであるため、イミディエイトウィンドウに文字列を表示するだけです。 ÄÜÖèàなどの文字が疑問符の付いた黒い四角に置き換えられることを除いて、正常に機能しています。ドキュメントによると、ファイルリーダーはUTF-8文字と互換性があるはずなので、何が間違っているのかわかりません。

...

    Dim reader = File.OpenText(filetoimport.Text)

    Dim line As String = Nothing

    Dim lines As Integer = 0

    While (reader.Peek() <> -1)
        line = reader.ReadLine()
        If line.StartsWith("<item key=""") Then
            Dim Firstpart As String = Nothing

            Firstpart = line.Substring(11, line.IndexOf(""" value=") - 11)

            Debug.WriteLine(Firstpart)

            lines = lines + 1

            Label3.Text = lines
            Application.DoEvents()
        Else
            Label3.Text = lines
            Application.DoEvents()
        End If

    End While

...

ファイルはUTF-8ではなくANSIエンコードされていますが、リーダーはUTF-8を使用します。

9
user2452250

リーダーの宣言をこの宣言に置き換えたところ、動作するようになりました!

Dim reader As New StreamReader(filetoimport.Text, Encoding.Default)

Encoding.Defaultは、Windowsコントロールパネルで設定されるANSIコードページを表します。

5
user2452250

このように...漢字を読むのに使った...

Dim reader as StreamReader = My.Computer.FileSystem.OpenTextFileReader(filetoimport.Text)
Dim a as String

Do
   a = reader.ReadLine
   '
   ' Code here
   '
Loop Until a Is Nothing

reader.Close()
12
matzone