我想在类上实现一个名为 ReadToEnd 的扩展方法Windows.Storage.Streams.DataReader
。这应该基本上读取流上的所有可用数据,如 System.IO.StreamReader。
尝试尽可能轻松地移植我的不兼容 WinRT 代码。
我不确定如何实现这一目标,或者是否有可能。
我想在类上实现一个名为 ReadToEnd 的扩展方法Windows.Storage.Streams.DataReader
。这应该基本上读取流上的所有可用数据,如 System.IO.StreamReader。
尝试尽可能轻松地移植我的不兼容 WinRT 代码。
我不确定如何实现这一目标,或者是否有可能。
设法写了一些东西,给了我我需要的东西。
internal static string ReadLine(this DataReader stream, ref int maxLength, Encoding encoding, char? termChar)
{
var maxLengthSpecified = maxLength > 0;
int i;
byte b = 0, b0;
var read = false;
using (var mem = new MemoryStream())
{
while (true)
{
b0 = b;
i = stream.ReadByte();
if (i == -1) break;
else read = true;
b = (byte)i;
if (maxLengthSpecified) maxLength--;
if (maxLengthSpecified && mem.Length == 1 && b == termChar && b0 == termChar)
{
maxLength++;
continue;
}
if (b == 10 || b == 13)
{
if (mem.Length == 0 && b == 10)
{
continue;
}
else break;
}
mem.WriteByte(b);
if (maxLengthSpecified && maxLength == 0)
break;
}
if (mem.Length == 0 && !read) return null;
return encoding.GetString(mem.ToArray(), 0, (int)mem.Length);
}
}