gpt4 book ai didi

.net - 使一个流的输出成为另一个流的输入的最佳方法是什么

转载 作者:行者123 更新时间:2023-12-02 15:02:02 26 4
gpt4 key购买 nike

我想知道除了使用字节缓冲区和循环之外,是否有更好/内置的方法来从一个流读取并将其写入另一个流(在.NET 中)。通常,这样做是为了将转换应用于流并将其继续移动。

在本例中,我正在加载文件,将其放入 deflate 流并将其写入文件(为简单起见,删除了错误处理):

byte[] buffer = new byte[10000000];
using (FileStream fsin = new FileStream(filename, FileMode.Open))
{
using (FileStream fsout = new FileStream(zipfilename, FileMode.CreateNew))
{
using (DeflateStream ds = new DeflateStream(fsout, CompressionMode.Compress))
{
int read = 0;
do
{
read = fsin.Read(buffer, 0, buffer.Length);
ds.Write(buffer, 0, read);
}
while (read > 0);
}
}
}
buffer = null;

编辑:

.NET 4.0 现在有了 Stream.CopyTo 函数,Hallelujah

最佳答案

确实没有比这更好的方法了,尽管我倾向于将循环部分放入 CopyTo 扩展方法中,例如

public static void CopyTo(this Stream source, Stream destination)
{
var buffer = new byte[0x1000];
int bytesInBuffer;
while ((bytesInBuffer = source.Read(buffer, 0, buffer.Length)) > 0)
{
destination.Write(buffer, 0, bytesInBuffer);
}
}

然后您可以将其称为:

fsin.CopyTo(ds);

关于.net - 使一个流的输出成为另一个流的输入的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/316007/

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