轻量级默认StreamReader不读取任何内容

本文关键字:任何内 读取 默认 StreamReader 轻量级 | 更新日期: 2023-09-27 17:50:19

我需要一个默认的StreamReader不读取任何内容而不抛出任何异常。

如何有效地构造这样一个对象?

Edit具体来说,如果我用ReadLineStreamReader对象中读取,我希望得到null,没有例外。

轻量级默认StreamReader不读取任何内容

理想情况下,我建议使用TextReader作为您的抽象级别-很少有必要直接依赖StreamReader,因为无论如何,搞乱底层流通常是一个坏主意。

如果你的代码需要一个TextReader,你可以使用

Foo(new StringReader(""));

如果你真的需要一个StreamReader,你可以传入一个空的MemoryStream:

Foo(new StreamReader(new MemoryStream()));

您可以使用.Seek()方法将位置设置为源流的末尾:

this.BaseStream.Seek(0, SeekOrigin.End);

如果你想为你的项目一些存根,你可以从StreamReader继承它:

public class EmptyStreamReader : StreamReader
{
    public EmptyStreamReader()
    {
    }
    public EmptyStreamReader(Stream stream): base(stream)
    {
    }
    public override int Read()
    {
        return 0;
    }
    public override int Peek()
    {
        return 0;
    }
    public override string ReadLine()
    {
        return string.Empty;
    }
    //and so on - just override all needed methods
}