0

我想不通。我的项目是获取一个文本文件,将其读入我的程序,更改它的值,然后将其重写回该文本文件。该程序将第一次运行,但是第二次运行它时,我用来从文件中读取的 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,但没有任何效果。

感谢您的所有帮助!

4

1 回答 1

1

这是不正确的,您的程序将 Cr + Cr + Lf 写入文本文件。混淆StreamReader,它会将第一个Cr视为行终止符。所以当你索引inventoryinfo时你会读到一个空行,kaboom

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

于 2013-11-10T11:04:51.010 回答