轻量级默认StreamReader不读取任何内容
本文关键字:任何内 读取 默认 StreamReader 轻量级 | 更新日期: 2023-09-27 17:50:19
我需要一个默认的StreamReader
不读取任何内容而不抛出任何异常。
如何有效地构造这样一个对象?
Edit具体来说,如果我用ReadLine
从StreamReader
对象中读取,我希望得到null
,没有例外。
理想情况下,我建议使用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
}