我有一个IInputStream
我想要读取数据,直到我遇到某个字节,此时我会将IInputStream
传递给其他对象以使用其余的流。< / p>
这就是我想出来的:
public async Task HandleInputStream(IInputStream instream)
{
using (var dataReader = new DataReader(instream))
{
byte b;
do
{
await dataReader.LoadAsync(1);
b = dataReader.ReadByte();
// Do something with the byte
} while (b != <some condition>);
dataReader.DetachStream();
}
}
似乎一次只能为一个字节运行LoadData
会非常慢。我的困境是,如果我选择一个缓冲区大小(如1024)并加载它,并且我的值显示10个字节,那么这个方法将有下一个1014字节的数据,并且必须将它传递给下一个方法进行处理
有没有更好的方法来解决这个问题,或者这是一个可接受的解决方案?
答案 0 :(得分:2)
如果您要查找的值离流的开头不太远,那么这种读取速度应该不会那么慢。你期待它到流的多远?你测试了性能吗?
根据您使用的流类型,您可以使用其他方法: