我需要将巨大的 Unicode 文件读入我的程序并转换为 ANSI 进行解析,对于某些文件,将它们再次存储为 Univode,而其他文件应该在 ANSI 代码页中。
据我了解,简单的读/写不支持 Unicode 文本,并且对于最大的文件(有些可能大至 300 Mb 甚至更大)使用twidestring.loadfromfile
是毫无疑问的,因为内存使用和加载时间。
我一直想知道加载块是否可以成为解决方案,但据我所知,它不支持 Unicode BOM ?
有什么建议吗?
我需要将巨大的 Unicode 文件读入我的程序并转换为 ANSI 进行解析,对于某些文件,将它们再次存储为 Univode,而其他文件应该在 ANSI 代码页中。
据我了解,简单的读/写不支持 Unicode 文本,并且对于最大的文件(有些可能大至 300 Mb 甚至更大)使用twidestring.loadfromfile
是毫无疑问的,因为内存使用和加载时间。
我一直想知道加载块是否可以成为解决方案,但据我所知,它不支持 Unicode BOM ?
有什么建议吗?
在 Delphi 中,您还可以使用内存映射文件。
内存映射文件的主要好处是提高 I/O 性能,尤其是在用于大文件时。...内存映射文件的一个可能好处是“延迟加载”,因此即使对于非常大的文件也使用少量 RAM。
内存映射文件。(2013 年 2 月 26 日)。在维基百科,免费百科全书。检索于 2013 年 3 月 17 日 15:14,来自http://en.wikipedia.org/w/index.php?title=Memory-mapped_file&oldid=540609840
德语“Delphi 论坛”中有一个出色且非常快速的文本阅读器。它使用内存映射文件。
您可能能够修改它以读取 Unicode 文本文件。但是,您可能必须自己测试 BOM。