Delphi 如何读取或写入巨大的Unicode文件?

Delphi 如何读取或写入巨大的Unicode文件?,delphi,unicode,delphi-2006,Delphi,Unicode,Delphi 2006,我需要将巨大的Unicode文件读入我的程序并转换为ANSI进行解析,对于一些文件,将它们再次存储为Univode,而其他文件则应存储在ANSI代码页中 据我所知,简单的读/写不支持Unicode文本,对于最大的文件(有些可能大到300 Mb甚至更大),使用twidestring.loadfromfile是毫无疑问的,因为内存使用量和加载时间都是如此 我一直在想,加载块是否是一种解决方案,但据我所知,它不支持Unicode BOM 有什么建议吗?在德国的“德尔福论坛”上有一个非常好而且非常快的论

我需要将巨大的Unicode文件读入我的程序并转换为ANSI进行解析,对于一些文件,将它们再次存储为Univode,而其他文件则应存储在ANSI代码页中

据我所知,简单的读/写不支持Unicode文本,对于最大的文件(有些可能大到300 Mb甚至更大),使用twidestring.loadfromfile是毫无疑问的,因为内存使用量和加载时间都是如此

我一直在想,加载块是否是一种解决方案,但据我所知,它不支持Unicode BOM


有什么建议吗?

在德国的“德尔福论坛”上有一个非常好而且非常快的论坛。它使用内存映射文件


您可能可以修改它以读取Unicode文本文件。但是,您可能需要自己测试BOM。

在Delphi中,您还可以使用内存映射文件

内存映射文件的主要好处是增加I/O 性能,尤其是在大文件上使用时。 ... 内存映射文件的一个可能好处是“延迟加载”,因此即使对于非常大的文件,也会使用少量RAM


内存映射文件。(2013年2月26日)。在维基百科中,免费的百科全书。检索时间:2013年3月17日15:14,来自

尝试创建一个过程,将该文件拆分为更小的部分,在对这些部分编制索引后,您可以读取每个部分。最后,这些块试图将它们写入内存。只需一次读取一位文件。处理每一部分并继续下一部分。为什么要使用非unicode Delphi 2006版?如果您关心unicode,请转到unicode delphi版本。下一步加载后,您打算做什么?仅在TNT组件中显示?浪费时间和精力。