gpt4 book ai didi

c# - 将多个文件流组合成一个文件?

转载 作者:行者123 更新时间:2023-11-30 20:45:14 25 4
gpt4 key购买 nike

我有一个应用程序,我可以相当快地持久化大量二进制数据。我目前有两个不同的数据通道,它们的大小可以独立增长,所以我使用两个文件存储它。然而,这两个文件彼此紧密耦合(ID 引用仅在另一个文件的上下文中才有意义),因此为了传输和适当的链接,最好将它们作为单个文件存储/传输文件。

是否有某种标准方法,可以在操作系统级别或在 .NET BCL 中构造两个可以在同一基础文件中独立增长的 FileStream 对象?

我考虑过实现某种分块/分页方案,但令我吃惊的是,这基本上是在复制文件系统已经在后台执行的操作,所以如果可能的话,我宁愿让文件系统管理它.

另一种方法是在录制完成后使用后处理工具合并两个文件。这是可控的,但并不理想。

我也尝试过一些轻量级数据库选项,但事实证明它们对于我正在做的事情来说太慢了。

这个问题的理想解决方案是在同一文件中扩展到两个以上的数据流,尽管两个就足以满足我目前的目的。

最佳答案

我只需要一个 zip 文件。 Ionic dotnetzip与流一起工作得很好,这样您就不必最终将它们加载到内存中(我们使用这种技术来压缩巨大的有效负载,而无需关闭服务器):

using(var z = new ZipFile())
{
z.AddEntry("file1", (name, stream) =>
{
someSourceStream1.CopyTo(stream);
});
z.AddEntry("file2", (name, stream) =>
{
someSourceStream2.CopyTo(stream);
});
z.Save(@"some\path.zip");
//or
//z.Save(someOutputStream);
}

关于c# - 将多个文件流组合成一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28416427/

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