gpt4 book ai didi

c# - 在 C# 中复制流时,什么时候应该显式执行 Flush()?

转载 作者:行者123 更新时间:2023-11-30 17:09:24 26 4
gpt4 key购买 nike

我有一种方法可以将一个流复制到另一个流中。它相当简单和典型:

public static void CopyStream(Stream source, Stream destination)
{
byte[] buffer = new byte[32768];
int read;
while ((read = source.Read(buffer, 0, buffer.Length)) > 0)
{
destination.Write(buffer, 0, read);
}
}

当目标流是 FileStream 时,我观察到直到复制完成并且目标流关闭后才创建文件。我相信在复制流时不时调用 destination.Flush() 会创建文件并在复制完成之前开始将内容写入磁盘,这会释放我系统中的内存。

destination.Flush() 调用何时完成?我的算法循环中的每次迭代?每 N 次迭代?从来没有?

最佳答案

视情况而定。

  • 您希望文案的稳健程度如何?
  • 部分数据有多大用处?

即使只有一个数据缓冲区有用,您也可以在每次迭代时调用 Flush,否则您可能每 5 调用一次。但是,如果部分数据无用,则完全不调用 Flush 是有意义的。

如果内存是个问题,那么更频繁地调用 Flush 会是一件好事。

关于c# - 在 C# 中复制流时,什么时候应该显式执行 Flush()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12970957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com