不清楚你真正想做什么,但你不是真的
试图从[a]StreamReader读取两行
,您正在尝试阅读
一
一次行,从
两个不同的流式读取器
使用相同的数据源/缓冲区。
Dim buff = Encoding.ASCII.GetBytes("[ID] " & vbCrLf & " salut" & vbCrLf)
Using ms As New MemoryStream(buff)
Using sr As New StreamReader(ms)
Console.WriteLine(sr.ReadLine())
Console.WriteLine("memstream poition: " & ms.Position)
Console.WriteLine(sr.ReadLine())
Console.WriteLine("memstream poition: " & ms.Position)
Console.WriteLine(sr.ReadLine())
End Using
End Using
如果在第一个
sr.ReadLine()
,你会看到
MemoryStream
位置已更改。如果将鼠标悬停在
sr
变量,您将看到原因:
Streamreader
有一个缓冲区,默认为1024字节。您可以将该缓冲区与代码中创建的缓冲区进行比较,看它们是否相同。还有一个
StreamReader
重载,允许您指定大小:
Public Sub New(stream As System.IO.Stream,
encoding As System.Text.Encoding,
detectEncodingFromByteOrderMarks As Boolean,
bufferSize As Integer)
尝试从具有不同(新)的单个数据流中读取
StreamReaders
不会工作,因为
前一个已经消耗了一些数据
。您应该能够将数千行读入一个数组或列表,代码可以将其用作行缓冲区。