我想在Windows.Storage.Streams.DataReader
类上实现一个名为ReadToEnd的扩展方法。这应该基本上读取流上的所有可用数据,如System.IO.StreamReader。
尝试尽可能简单地移植不合规的WinRT代码。
我不确定如何实现这一目标,或者甚至是否可能。
答案 0 :(得分:0)
管理写一些能给我所需要的东西。
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);
}
}