0

ファイルから読み取る関数と、ファイルに書き込む関数があります。読み書きしようとしているファイルは、1 から 3000 までの数字を順番に並べたものです。ファイルを問題なく読み取り、 という変数に保存しますnumbers。何らかの理由で、ファイルを書き込むと、最初の 2913 行が正しく書き込まれますが、これが出力の最後です。

2908
2909
2910
2911
2912
2913
2

プログラムを実行するたびに、ファイルは番号 2914 の途中で終了します。プログラムは例外をスローしません。なぜこの動作が発生するのですか?

これが私のコードです:

Sub Main() As Integer 
    Dim numbers As New List(Of String)
    ReadFile(numbers, "C:\test.txt")
    WriteFile(numbers, "C:\test2.txt")
End Function

Private Sub ReadFile(ByRef lines As List(Of String), _
                     ByVal filePath As String)
    Dim sr As New System.IO.StreamReader(filePath)
    Do While sr.Peek <> -1
        lines.Add(sr.ReadLine)
    Loop
End Sub

Private Sub WriteFile(ByVal lines As List(Of String), _
                     ByVal filePath As String)
    Dim sw As New System.IO.StreamWriter(filePath, False)
    For Each line In lines
        sw.WriteLine(line)
    Next
End Sub
4

2 に答える 2

2

私の問題は、を閉じなかったことStreamWriterです。メソッドにaStreamWriter.Closeを追加することで、問題を解決できました。WriteFile

于 2013-05-21T16:15:34.537 に答える