1

我有一个 1.5GB 字节的文件size {filebyte}。我想在一个类似于 Delphi 的实例中读取整个文件

bytedata:=filebyte.readallbytes(filename);

结果是,在一个实例中,您将拥有一个元素数量为高(字节数据)-低(字节数据)+1 的字节数组。缓存中是否有等效代码。一个1.5G大小的文件可以保存在内存中的缓存中吗?我不想分块读取文件,因为分析数据的操作要求整个文件一次都在内存中。谢谢

4

1 回答 1

1

您可以根据需要从流中读取任意数量的数据。问题就在这里,你可以在局部变量中存储多少。

set fs=##class(%Stream.FileCharacter).%New()
set fs.Filename="c:\test.txt"
set length=fs.Size
set data=fs.Read(length) \\ if size no more than 3.5Mb

局部变量大小受限于 3,641,144 字节或 32,767 字节的长字符串禁用。每个进程最多 2012.1 的内存被限制为 48 兆字节。并且在 2012.2 中进行了更改,可以为每个进程设置最多 2 TB 的数据,并且可以通过编程方式实时为具有特殊变量$zstorage的当前进程设置。

于 2017-01-31T12:39:38.797 回答