2013-03-16 67 views
0

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

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

我一直在想,如果加载块可能是一个解决方案的路径,但据我所知,它不支持Unicode BOM?

任何暗示?

+0

尝试创建一个程序,将该文件转换为较小的部分,并且在索引这些部分之后,您可以读取每个部分。最终这些块试图将它们写入内存中。 – user1929959 2013-03-16 14:03:47

+1

只需一次读取文件。处理每个部分并转到下一部分。 – 2013-03-16 16:02:26

+1

为什么使用非Unicode的Delphi版本2006?如果您关心unicode,请转至unicode delphi版本。下载后,你打算做什么?仅在TNT组件中显示?浪费时间和精力。 – 2013-03-16 21:43:17

回答

0

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

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

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