流在Node.js中非常常见,并且非常容易处理。创建一个流非常简单,一旦我们有了一个流,我们就可以这样做:
stream.on('data', (data) => {
// processing
});
处理来自流的数据。
有没有类似的。net Core ?我的意思是,我确实知道 . net是非常不同的,因为没有事件循环等等。
但我想知道,尽管从根本上不同于Node.js,我们是否可以完成相同的行为
最大的区别在于异步模型:c#使用async
- await
进行异步,而不是回调。然后是API的区别:您可以使用Stream
,它为您提供byte[]
数据(您必须自己分配)。或者你可以使用StreamReader
,它给你char[]
的数据或string
的行。
所以,你的选项是:
Stream.ReadAsync
:
Stream stream = …;
byte[] buffer = new byte[1024];
int read;
while ((read = await stream.ReadAsync(buffer, 0, buffer.Length) != 0)
{
// processing
}
StreamReader.ReadAsync
:
StreamReader stream = …;
char[] buffer = new char[1024];
int read;
while ((read = await stream.ReadAsync(buffer, 0, buffer.Length) != 0)
{
// processing
}
StreamReader.ReadLineAsync
:
StreamReader stream = …;
string line;
while ((line = await stream.ReadLineAsync()) != null)
{
// processing
}
可能。
查看System.IO.Stream的MSDN文档。
有不同类型的流