有一个未知大小的流(我的类)。当Stream结束时,Read()返回0。没问题的。但是在这种情况下,CopyToEnd()出现了一个概念性问题。CopyToEnd()从某个位置读取一定数量的字节,并将它们复制到流的末尾。但是,如果它不知道流的大小,它如何做到这一点呢?创建一个虚拟抽象方法SeekToEnd()并在Stream继承的类中定义它可能是一个好主意?或者在知道流大小的子类中移动方法CopyToEnd()更合理?欢迎任何想法。
发布于 2013-09-19 20:16:18
我认为,你可以在你的类的“后端”链接表中,从对CopyToEnd()的顺序调用中累加值。当你从原始文件到达EOF时,不要返回0,而是开始处理保存的列表。当list结束时,返回0。
这种机制解决了许多“边缘情况”--例如,当你从链表中读取块时(在实际文件结束后),同时调用CopyToEnd()。
https://stackoverflow.com/questions/18890484
复制相似问题