0

有一个未知大小的流(我的班级)。当 Stream 结束时,Read() 返回 0。没关系。但是在这种情况下出现了 CopyToEnd() 的概念问题。CopyToEnd() 从某个位置读取一些字节数并将它们复制到 Stream 的末尾。但是,如果它不知道流大小,它怎么能做到这一点呢?创建一个虚拟抽象方法 SeekToEnd() 并在 Stream 继承的类中定义它是一个好主意吗?或者在知道大小流的子类中移动方法 CopyToEnd() 更合理?欢迎任何想法。

4

1 回答 1

0

我认为,您可以保留类“结束后”链接列表,其中累积来自对 CopyToEnd() 的排序调用的值。当您从原始文件到达 EOF 时,不要返回 0,而只是开始处理保存的列表。列表结束时返回 0。

这种机制解决了许多“边缘情况” - 例如,当您从链接列表中读取块时(在真实文件结束之后),同时 - 调用 CopyToEnd()。

于 2013-09-19T12:16:17.873 回答