我正在尝试使用VB.NET来处理一个非常大的纯文本文件(2 GB)。它是一个数据库,具有 . 的字段分隔符SOH
和 . 的记录分隔符STX
。
我想分离文件的字段和记录。
我通常会读取文本文件的每一行,然后使用 split 函数将字段分开。我不能使用这种方法,因为每行并不总是有分隔符。
有什么方法可以读取文件直到STX
找到(而不是一次一行)?
我正在尝试使用VB.NET来处理一个非常大的纯文本文件(2 GB)。它是一个数据库,具有 . 的字段分隔符SOH
和 . 的记录分隔符STX
。
我想分离文件的字段和记录。
我通常会读取文本文件的每一行,然后使用 split 函数将字段分开。我不能使用这种方法,因为每行并不总是有分隔符。
有什么方法可以读取文件直到STX
找到(而不是一次一行)?
.NET 中没有“Read until string 'foo'”,您需要打开 aFileStream
并将块读取FileStream.Read
到临时缓冲区中,然后扫描该缓冲区中的令牌。
我会查看 TextFieldParser 类,看看它是否可以完成任务:
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx
如果不是,我会尝试免费的 FileHelpers 库:
如果这些都不能完成这项工作,那么正如 Albin 所提到的,那么你就只能使用缓冲区读取良好的老式文件流了。