能否创建 TextReader 的副本而不使原始读取器向前移动?

3

我有一个TextReader,它是由一种黑盒系统创建的,所以我没有任何关于创建它的源文件的信息。

我需要将这个TextReader回传到我的应用程序中创建的对象中的黑盒系统中。

但是,我需要从TextReader中获取一些信息来帮助我创建对象。

我知道你不能“倒带”TextReader,但是否有一种方法可以复制它,以便我可以读取和丢弃临时副本,而不会使源TextReader向前移动?

我查看了此SO线程,但我不确定它是否涉及我的要求。

如果是,请有人详细说明一下,以便我理解?

提前感谢。


阅读意味着推进文本阅读器。如果您有一个临时副本,那么该副本如何从源文本阅读器获取数据而不是从源文本阅读器中读取?这是不可能的,因此我怀疑这是可行的。 - O. R. Mapper
我想知道是否可以在内部复制到内存中,而不是使用其中一个“读取”方法。 - Ste
通常情况下是不行的。想象一下,读者并不像一个包含所有数据并在调用“Read”时输出它的对象。相反,读者是一个知道在哪里找到数据并在调用“Read”时从那里获取数据的对象。同样,当前的“位置”不是读者的内部属性,而可能(取决于读者类型)是数据源固有的东西。 - O. R. Mapper
1个回答

3

有一些技巧可以做到这一点,你可以这样做:ReadToEnd 方法将整个文本读入字符串中,然后按照自己的需求进行处理,最后使用之前读取的字符串创建 new StringReader。我相信黑盒系统会完美运作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接