我看了一下,TMemorStream.locadfromfile实际上也是用TFileStream做的。
现在我创建一个MemoryStream,然后load一个很大的文件,内存中不会出现这个文件的一个拷贝吧?
这个时候是不是应该只有一个文件在硬盘上的地址呀,等到用的时候实际去读的是硬盘而不是内存呀?
现在我创建一个MemoryStream,然后load一个很大的文件,内存中不会出现这个文件的一个拷贝吧?
这个时候是不是应该只有一个文件在硬盘上的地址呀,等到用的时候实际去读的是硬盘而不是内存呀?
function Read(var Buffer; Count: Longint): Longint; virtual; abstract;
Buffer指向缓冲区,Count为缓冲区大小;按照我的理解,这个Count应该就是文件的大小,所以就是在内存中开辟了一个与文件大小相同的缓冲区,缓冲区的内容就是文件的内容.
function Read(var Buffer; Count: Longint): Longint;
Count是要读取的大小吧?不应该是文件的大小。to lianshaohua(永远深爱一个叫“然”的好女孩儿!)
只要一Load就会占很大的内存吗?不好意思,我机器上没有Delphi,不能做实验。我总觉得Load的时候不应该直接做一个副本吧,最起码要象beyondtkl(大龙驹<暗黑系魔法师&&赏金猎人>) 说的那样,用到的时候才经过内存吧?
我说的COUNT是文件大小是指在把文件LOAD进去时.COUNT的大小为文件大小.TO 大龙驹:
可能在底层中是以块做为操作吧.或许和CPU的CACHE相似 还有文件流与网络上的流有什么联系,这个不是很清楚,是相同概念吗?还望赐教.
要读文件干嘛不用TFileStream,需要多少就载入内存多少。