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

时间:2013-03-16 13:59:37

标签: delphi unicode delphi-2006

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

正如我所理解的那样,简单的读/写不支持Unicode文本,对于使用twidestring.loadfromfile的最大文件(有些可能大到300 Mb甚至更大)是不可能的,因为内存用法和加载时间。

我一直想知道加载块是否可以成为解决方案的路径,但据我所知,它不支持Unicode BOM?

任何建议?

2 个答案:

答案 0 :(得分:0)

德国“德尔福论坛”中有一个非常快速text reader。它使用内存映射文件。

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

答案 1 :(得分:0)

在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