reader.ReadToEnd 和 Stream.Read 之间的区别

Posted

技术标签:

【中文标题】reader.ReadToEnd 和 Stream.Read 之间的区别【英文标题】:difference between reader.ReadToEnd and Stream.Read 【发布时间】:2021-12-25 05:37:22 【问题描述】:

在 DotNet 中使用 Amazon S3 客户端时,我们会得到一个 GetObjectResponse 类型的对象,该对象具有 .ResponseStream 属性,我们可以使用 StreamReader.ReadToEnd(ResponseStream) 一次性读取内容。但是也有使用 MemoryStream 缓冲区,我们可以使用 Stream.Read() 方法使用有限大小的缓冲区分块读取它。每种方法的缺点/优点是什么?分块方式在读取大文件时会不会更有优势?

【问题讨论】:

您能否添加一些演示代码来说明实际问题是什么?这听起来更像是一个一般性的 C# 问题,而不是与 AWS 相关的问题,但只是想仔细检查一下。 【参考方案1】:

StreamReader 中将提供简单的文本文件访问。 StremReader.ReadToEnd() 将读取整个文件以结束。

StreamRead() 接收从较大文件中分解出来的小块数据。 应用程序可以从流中读取这些小块数据,而不必直接从较大的文件中读取所有数据

所以对于较大的文件,分块方法StreamRead() 会更有效。

【讨论】:

以上是关于reader.ReadToEnd 和 Stream.Read 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

C#修改json文件中的某些值

如何在本地调试微信接口

WCF Web 服务返回 json 格式数据

将 xmlfile 插入数据库时​​出错

Stream.Dispose 是不是总是调用 Stream.Close(和 Stream.Flush)

Flutter状态管理——单Stream和广播Stream