2012-06-20 45 views
5

我有一个DLL出现数据流到一个流。但它增加了一个后缀和我不想要的前缀。 我可以创建一个MemoryStream,让DLL输出数据,然后修剪它,但可以有几GB的数据,所以我只是希望它被直接保存到一个文件(FileStream)。 我认为最好的解决方案是创建自己的Stream类。 所以,我提出:如何检测流结束?

function TFileStream2.Write(const Buffer; Count: Integer): Longint; 

,我检查位置,如果是= 0,那么我放弃从缓冲区前几个字节。 这样我可以修剪文件的开始。但是,如何检测流结束,以便我可以从最后丢弃一些字节?

回答

6

当流对象被销毁时,只需修剪掉文件的最后部分。您可以通过修改Size属性来完成此操作。

+0

但我认为字节已经保存到磁盘。这样可以缩短文件吗? – Tom

+0

它的工作!非常感谢,大卫! – Tom