StartsWith流的扩展方法
本文关键字:方法 扩展 StartsWith | 更新日期: 2023-09-27 18:21:11
我想为流编写一个bool StartsWith(string message)
扩展方法。最有效的方法是什么?
从以下内容开始。。。
public static bool StartsWith(Stream stream this, string value)
{
using(reader = new StreamReader(stream))
{
string str = reader.ReadToEnd();
return str.StartsWith(value);
}
}
然后优化。。。我将把这作为一个练习留给你,StreamReader
有各种读取方法,可以让你以更小的"块"读取流,以获得更有效的结果。
static bool StartsWith(this Stream stream, string value, Encoding encoding, out string actualValue)
{
if (stream == null) { throw new ArgumentNullException("stream"); }
if (value == null) { throw new ArgumentNullException("value"); }
if (encoding == null) { throw new ArgumentNullException("encoding"); }
stream.Seek(0L, SeekOrigin.Begin);
int count = encoding.GetByteCount(value);
byte[] buffer = new byte[count];
int read = stream.Read(buffer, 0, count);
actualValue = encoding.GetString(buffer, 0, read);
return value == actualValue;
}
当然,Stream
本身并不意味着它的数据可以解码为字符串表示。如果你确定你的流是,你可以使用上面的扩展