字符串超过2GB

时间:2015-11-21 05:50:33

标签: vb.net string out-of-memory

我需要将几个文本文件连接在一起,每个输入文件大约为3.5GB。这些是在行尾包含vbCrLf的简单文件。

我之前用于从网页(下面)获取文本流的一些代码使用Peek函数(见下文),我想知道Peek是否可以某种方式用于从文件中读取少于2GB的内容 - >写入连接文件,然后继续每个文件的后半部分?

 Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
 Dim readStream As New StreamReader(recvStream, encode)
 Dim sPage As String
 sPage = ""
 While (readStream.Peek() > -1)
   sPage += readStream.ReadLine() + vbCrLf
 End While

基本上,我不能使用Peek,编写(连接),Peek,连接等来读取1.8GB,而不会丢失任何内容。有没有什么可以使用我可以使用StreamWriter写入的3.5GB流?

1 个答案:

答案 0 :(得分:0)

以下是解决方案:

 Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
 Dim readStream As New StreamReader(recvStream, encode)
 Dim str, sPage As String
 sPage = ""
 While (readStream.Peek() > -1)
   sPage += readStream.Read(str, 0, 32768) 
 End While
 'Next, split the string into lines at the carriage returns
 Dim Buff() As String = Split(sPage, vbCrLf)