【问题标题】:Do I need to Flush() a FileStream when reading?阅读时是否需要 Flush() 一个 FileStream?
【发布时间】:2015-04-19 04:33:11
【问题描述】:

我不确定在读取文件时是否也使用缓冲区,还是仅在写入文件时使用。

【问题讨论】:

  • 不,您遇到什么问题?或者这是一个普遍的问题?
  • 请提供更多详细信息 - 目前的问题太宽泛,无法简明地回答。
  • Flush 在读取数据时不是必需的。它只将缓冲区中的数据写入底层流。
  • 也许检查documentation:“因为缓冲区可以用于读取或写入,Flush() 执行以下两个功能......”
  • @helb - 我认为如果你只是以独立的方式使用这个FileStream 是没有意义的。我可以想象流是从句柄构造的场景,你已经读取了一些数据,现在你想将句柄传递给一些本机函数,并希望确保它正确定位,以便该本机函数完成其工作。跨度>

标签: c# .net filestream flush


【解决方案1】:

读取时是否需要刷新 FileStream()?

没有。 Flush() 写入 写入缓冲区中的剩余字节。

是不是在读取文件的时候也用到了缓冲区?

是的,出于性能原因,有一个缓冲区,但是除了简单地从流中读取字节直到遇到 EOF 之外,没有办法刷新这个缓冲区。

【讨论】:

  • 对于FileStream,具体来说,Flush函数实际上可能会执行一些活动。
【解决方案2】:

这是documentation 必须对 Stream.Flush() 说的话:

在派生类中重写时,清除此流的所有缓冲区 并导致将任何缓冲数据写入底层设备。

我想可以肯定地说阅读时不需要冲洗。

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 2012-01-19
    • 2021-09-28
    • 2015-11-26
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多