【问题标题】:How to read or write huge Unicode files?如何读取或写入巨大的 Unicode 文件?
【发布时间】:2013-03-16 13:59:36
【问题描述】:

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

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

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

有什么建议吗?

【问题讨论】:

  • 尝试创建一个程序,将该文件分成更小的部分,在索引这些部分后,您可以阅读每个部分。最终这些块尝试将它们写入内存。
  • 一次只读取一个文件。处理每个部分并继续下一个。
  • 你为什么使用非 unicode 的 Delphi 2006 版?如果您关心 unicode,请移至 unicode delphi 版本。接下来你加载它之后,你打算做什么?仅在 TNT 组件中显示?浪费时间和精力。

标签: delphi unicode delphi-2006


【解决方案1】:

在德国的“Delphi 论坛”中有一个出色且非常快速的text reader。它使用内存映射文件。

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

【讨论】:

    【解决方案2】:

    在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多