使用intersystems'一次读取整个文件字节。缓存?

时间:2017-01-31 00:04:09

标签: file caching byte intersystems

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

bytedata:=filebyte.readallbytes(filename);

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

1 个答案:

答案 0 :(得分: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

本地变量大小limited乘以3,641,144字节或32,767字节的长字符串。每个进程最多到2012.1内存限制为48mbytes。并且在2012.2中它已被更改,可以设置为2 terabytes per process,并且可以通过编程方式实时设置为具有特殊变量$zstorage的当前流程。