gpt4 book ai didi

c# - 如何在 .NET 中拆分(复制)流?

转载 作者:太空狗 更新时间:2023-10-29 18:24:15 26 4
gpt4 key购买 nike

有谁知道在哪里可以找到 Stream splitter 实现?

我正在寻找一个流,并获得两个可以独立读取和关闭而不会相互影响的独立流。这些流应该各自返回与原始流相同的二进制数据。无需实现 Position 或 Seek 等...仅转发。

我更希望它不只是将整个流复制到内存中并多次提供它,这将非常简单,我自己可以实现。

有什么东西可以做到这一点吗?

最佳答案

我已经在 github 和 NuGet 上提供了一个 SplitStream。

它是这样的。

using (var inputSplitStream = new ReadableSplitStream(inputSourceStream))

using (var inputFileStream = inputSplitStream.GetForwardReadOnlyStream())
using (var outputFileStream = File.OpenWrite("MyFileOnAnyFilestore.bin"))

using (var inputSha1Stream = inputSplitStream.GetForwardReadOnlyStream())
using (var outputSha1Stream = SHA1.Create())
{
inputSplitStream.StartReadAhead();

Parallel.Invoke(
() => {
var bytes = outputSha1Stream.ComputeHash(inputSha1Stream);
var checksumSha1 = string.Join("", bytes.Select(x => x.ToString("x")));
},
() => {
inputFileStream.CopyTo(outputFileStream);
},
);
}

我还没有在非常大的流上测试过它,但试一试吧。

github: https://github.com/microknights/SplitStream

关于c# - 如何在 .NET 中拆分(复制)流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1055872/

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