- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们目前使用 ICsharpCode.SharpZipLib 库的 GZipOutputStream 类进行压缩。我们从一个线程中完成。
我想将我的输入数据流分成块并并行压缩它们。
虽然我担心这个库可能有一些静态数据,这些静态数据会被多个线程覆盖,从而破坏结果流。
任何想法将不胜感激。
最佳答案
标准做法是在编码类时确保所有静态成员都是线程安全的。所以我认为你不太可能因为这个问题而遇到问题。当然,如果您计划使用来自不同线程的相同 GZipOutputStream
那么这肯定会有问题,因为该类的实例成员不是线程安全的。
您可能能够做的是创建一个线程安全的中间人 Stream
类(想想装饰器模式)并将其传递给 GZipOutputStream
。这个自定义流类,称为 ThreadSafeStream
,它本身会接受一个 Stream
实例,并会使用适当的机制来同步对它的访问。
您将为每个线程创建一个 GZipOutputStream
实例,它们都将共享相同的 ThreadSafeStream
包装器实例。我怀疑 ThreadSafeStream
方法中可能会有很多瓶颈,但是您应该能够从中获得一些并行性。
关于.net - 在多个线程上并行调用 ICsharpCode.SharpZipLib 是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901225/
我正在使用 CSharpZipLib库自动压缩一些文件。问题是生成的 zip 文件不适用于 Winzip(8.1 版)或 XP 的压缩文件夹。它确实适用于 7zip。 Winzip 给出一个错误,提示
有没有办法找出提取时未提取存档的总大小。 最佳答案 试试这个: ZipFile zFile = new ZipFile(myZipFileName); long uSize = 0; foreach
我正在使用 SharpZipLib压缩一个带有子目录的文件夹,这工作正常。我想做的是剥离第一个子文件的父目录,这样不相关的整个结构就不会被执行... 例子: c:\a\b\c\d\e\f\g\h\fi
每当我尝试获取文件时,输入流的长度 (s.Length) 始终为零,我做错了什么? ZipEntry 有效且具有正确的文件大小等。 这是我使用的代码: public static byte[] Get
我使用了许多现有代码,并尝试以多种方式压缩文件夹,但我仍然遇到时间和文件夹大小(仍然大约相同大小)的问题。此代码来自库的源代码,但仍然没有给出想要的结果 static void Main(string
我需要压缩一个字符串以减小 Web 服务响应的大小。我在 SharpZipLib 示例中看到了单元测试,但不是我所需要的示例。 在下面的代码中,ZipOutputStream 的构造函数返回异常:“N
我使用 DotNetZip 创建一个带有内存字符串的 zip 存档,并使用以下代码将其作为附件下载。 byte[] formXml = UTF8Encoding.Default.GetBytes("T
我正在尝试使用以下代码将文件添加到现有存档中。运行时没有显示错误或异常,但也没有文件添加到存档中。有什么想法吗? using (FileStream fileStream = File
我正在尝试使用 SharpZipLib 从 zip 存档中提取指定的文件。我见过的所有示例都希望您解压缩整个 zip,然后执行以下操作: FileStream fileStreamIn
我有一个场景,我想使用 SharpZipLib 压缩电子邮件附件。然后最终用户将打开附件并解压缩附件。 最初使用 SharpZipLib 压缩的文件是否可以通过其他程序为我的最终用户轻松解压缩? 最佳
我想使用 SharpZipLib 打包压缩一些文件夹。示例结构 directory1: directory2: file1 file2 directory3:
我对压缩算法不是很精通。 我有一段 C# 代码使用上述库来压缩和解压缩一大块数据。它使用压缩级别 3,但除此之外,它是最基本的实现。 我现在想使用 C++ 对这些数据执行相同的操作。既然是 zip 格
我有一个 453MB 的 XML 文件,我正在尝试使用 SharpZipLib 将其压缩为 ZIP 文件. 下面是我用来创建 zip 的代码,但它导致了 OutOfMemoryException。此代
如何使用没有压缩的 SharpZipLib 将文件添加到 Zip 存档? Google 上的示例似乎少得可怜。 最佳答案 您可以使用 ZipOutputStream 类的 SetLevel 方法将压缩
我的代码中有以下方法: private bool GenerateZipFile(List filesToArchive, DateTime archiveDate) { try {
我有一个发送文件和文件夹的文件传输应用程序。 (服务器 - 客户端) 我正在尝试通过 TCP(套接字)发送数据,我已经为传输数据的方式制定了一些规则,所以如果它发送一个包含很多文件的大文件夹,它应该先
我使用 SharpZipLib 压缩文件,但用户收到此错误: 1 is not a supported code page 我找到了 here该问题在区域设置中,解决方案在 "replace the
我使用以下代码创建一个 zip 文件: var files = Directory.GetFiles(targetPath); var zip = ZipFile.Create(targetPath
我们目前使用 ICsharpCode.SharpZipLib 库的 GZipOutputStream 类进行压缩。我们从一个线程中完成。 我想将我的输入数据流分成块并并行压缩它们。 虽然我担心这个库可
大家好, 我正在尝试使用 ICSharpCode.SharpZipLib 库生成 Zip 文件,但它抛出了一个非常奇怪的错误。 代码: public static void ZipFiles(stri
我是一名优秀的程序员,十分优秀!