2013-03-16 31 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