修改完文本文件后,StreamReader没有读取第二行文本文件

时间:2013-11-10 10:12:46

标签: visual-studio-2012

我无法弄清楚这一点。 我的项目是获取一个文本文件,将其读入我的程序,更改它的值,然后将其重写回该文本文件。 程序将在第一次运行,但是第二次运行它时,我用来从文件中读取的for-next循环表示第二行没有文本。代码在第一个循环后停止并启动应用程序。任何人都知道出了什么问题?

这是我使用的StreamReader循环:

    Dim inventoryReader As New StreamReader("Inventory.txt")
    Dim line As String
    Dim inventorycounter As Decimal = 0
    Do Until inventoryReader.EndOfStream
        line = inventoryReader.ReadLine()
        inventoryinfo = line.Split(ControlChars.Tab)
        inventory(inventorycounter, 0) = inventoryinfo(0)
        inventory(inventorycounter, 1) = inventoryinfo(1)
        inventorycounter += 1
    Loop
    inventoryreader.close()

这是我使用的StreamWriter循环:

    Dim output As New StreamWriter("Inventory.txt")
    For outputcounter As Integer = 0 To 16
        output.WriteLine(inventory(outputcounter, 0) & ControlChars.Tab & inventory(outputcounter, 1) & ControlChars.Cr)
    Next
    output.WriteLine(inventory(17, 0) & ControlChars.Tab & inventory(17, 1))
    output.Close()

我认为问题是该程序第二次没有读取ControlChars.Cr,但我尝试过CrLf,Lf和Nextline,但没有任何工作。

感谢所有帮助人员!

1 个答案:

答案 0 :(得分:1)

这不正确,你的程序将Cr + Cr + Lf写入文本文件。令人困惑的StreamReader,它会将第一个Cr视为行终止符。所以当你索引 inventoryinfo

时,你会读到一个空行,kaboom

从代码中删除 ControlChars.Cr 。 StreamWriter.WriteLine()不需要任何帮助,它已经编写了正确的行终止符。