通过拆分为多个文件来处理巨大的 utf8 文件
processing huge utf8 files with splitting to multiple files
我正在开发一个导入程序,用于在 C# 中导入大文本 utf8(字符字节不同)文件。如果我将所有 20GB 文件加载到 RAM,则此解决方案不合适且不可能。最好将文件拆分为多个较小的文件进行处理。现在,我的问题是拆分文件进行处理。我的解决方案是逐行读取文件,如果行号是我合适的数字,则拆分它们。但我认为,逐行读取文件进行拆分并不是快速的解决方案。分裂时间高。有没有一种算法可以将大型utf8文件拆分为多个文件而无需逐行读取并且速度更快。
针对您的问题,我的建议如下。我想记住关注点分离,因为文件的拆分和文件的处理可以分开以便更好地维护。
- 以二进制而非文本形式读取文件
- 不要逐行阅读,因为您不需要读取文件进行拆分。
- 使用搜索。参考 link.
- 如果您需要保存完整行的拆分文件,那么在您定位后,搜索下一个行尾字符,然后相应地拆分文件。
- 分割文件后,单独处理文件。
我正在开发一个导入程序,用于在 C# 中导入大文本 utf8(字符字节不同)文件。如果我将所有 20GB 文件加载到 RAM,则此解决方案不合适且不可能。最好将文件拆分为多个较小的文件进行处理。现在,我的问题是拆分文件进行处理。我的解决方案是逐行读取文件,如果行号是我合适的数字,则拆分它们。但我认为,逐行读取文件进行拆分并不是快速的解决方案。分裂时间高。有没有一种算法可以将大型utf8文件拆分为多个文件而无需逐行读取并且速度更快。
针对您的问题,我的建议如下。我想记住关注点分离,因为文件的拆分和文件的处理可以分开以便更好地维护。
- 以二进制而非文本形式读取文件
- 不要逐行阅读,因为您不需要读取文件进行拆分。
- 使用搜索。参考 link.
- 如果您需要保存完整行的拆分文件,那么在您定位后,搜索下一个行尾字符,然后相应地拆分文件。
- 分割文件后,单独处理文件。