Stream在Node.js中很常见,它们很容易处理。创建一个流非常简单,一旦我们有一个,我们可以做类似的事情:
stream.on('data', (data) => {
// processing
});
处理来自流的数据。
有没有.NET Core类似的东西?我的意思是,我知道 .NET是非常不同的,因为没有事件循环等等。
但我想知道,尽管与Node.js有根本的不同,我们可以完成同样的行为。
答案 0 :(得分:0)
最大的区别在于异步模型: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
}
答案 1 :(得分:-1)
潜在
查看System.IO.Stream的MSDN文档。
有不同类型的流。