Мне нужно объединить несколько текстовых файлов, для которых каждый входной файл составляет около 3,5 ГБ. Это простые файлы, содержащие vbCrLf в концах строк.Строка длиной более 2 ГБ
В предыдущем коде, который я использовал для извлечения текстовых потоков с веб-страниц (см. Ниже), используется функция Peek (см. Ниже), и мне интересно, может ли Peek использоваться для чтения менее 2 ГБ из файла -> write to конкатенированный файл, а затем продолжить в последней половине каждого файла?
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
В принципе, я не мог прочитать, скажем, 1,8 Гб с помощью Peek, написать (СЦЕПИТЬ), Peek, конкатенации и т.д. без после потери ничего. Есть ли что-нибудь еще, что возьмет поток 3.5GB, который я мог бы написать, чтобы писать с помощью StreamWriter?
ли приложение 64-битное приложение на 64-разрядной версии Windows, в? –
Вы видели перегрузку [Метод StreamReader.Read (Char(), Int32, Int32)] (https://msdn.microsoft.com/en-us/library/9kstw824%28v=vs.110%29.aspx) который позволяет читать в кусках? Затем вместо хранения данных в строке просто записывайте их в файл назначения, когда вы читаете каждый фрагмент. Я предлагаю размер буфера 32768 для начала. –
Благодаря @Andrew - StreamReader.Read работал и решил проблему. – wrtsvkrfm