Tag: compression

阅读时解压缩文件

我有数百个压缩的CSV文件。 这很棒,因为它们占用的空间很小,但是当它需要使用时,我必须在我的HD上留出一些空间并在我处理之前解压缩它们。 我想知道.NET是否可以在读取文件时解压缩文件。 换句话说,我想打开一个zip文件,开始解压缩文件,然后我们去处理文件。 因此我的驱动器上不需要额外的空间。 有什么想法或建议吗?

无法解压缩ZLIB / DEFLATE数据

我正在尝试从网络捕获文件(PCAP)中提取压缩字节数据。 来自其中一些数据包的数据没有ZLIB标头(前2个字节,其中第一个字节的低4位始终为8),因此当我尝试使用ZlibStream进行解压缩时会出现ZlibStream 。 标题数据似乎工作正常。 据我所知,ZLIB只是DEFLATE的页眉和页脚,我将没有标题的数据传递给DeflateStream 。 这次DeflateStream不会抛出任何错误,它只是提供了错误的数据(但它给出了正确的长度)…… 这是一个示例数据。 C#代码示例使用DotNetZip: byte[] test3 = new byte[] { 0x1a, 0x6d, 0xf, 0x8d, 0xb6, 0x87, 0x46, 0xdb, 0x43, 0xa3, 0xed, 0xa1, 0xd1, 0xf6, 0xd0, 0x68, 0x7b, 0x68, 0xb4, 0x3d, 0x34, 0xda, 0x1e, 0xb2, 0x44, 0x3a, 0x39, 0x6f, 0x24, 0xae, 0x1f, 0x2, 0x0, 0x0, 0x0, 0xff, 0xff }; static void […]

C#SharpZipLib剥离不相关的目录名称

我正在使用SharpZipLib压缩包含子目录的文件夹,这很正常。 我想做的是剥离第一个子文件的父目录,以便不进行整个无关的结构…… 例: C:\ A \ B \ C \ d。\ E \˚F\克\ħ\ FILE1.TXT C:\ A \ B \ C \ d。\ E \˚F\克\ħ\ FILE2.TXT C:\ A \ B \ C \ d。\ E \˚F\克\ħ\ I \ FILE1.TXT C:\ A \ B \ C \ d。\ E \˚F\克\ħ\ I \ FILE2.TXT 它应该像这样结束: FILE1.TXT FILE2.TXT I […]

如何使用SharpCompress的’BZip2Stream来压缩字符串?

我试图使用SharpCompress’BZip2Stream压缩字符串(str)但无法实现它。 以下是我到目前为止的代码, public static string Compress(string str) { var data = Encoding.UTF8.GetBytes(str); using (MemoryStream stream = new MemoryStream()) { using (BZip2Stream zip = new BZip2Stream(stream, SharpCompress.Compressor.CompressionMode.Compress)) { zip.Write(data, 0, data.Length); var compressed = Encoding.UTF8.GetString(stream.ToArray()); return compressed; } } } 无论我传递给str是什么字符串,它总是返回BZh 。 任何帮助是极大的赞赏!

在GzipStream中压缩多个文件

如何在GZipStream中压缩多个文件? 我有3个xml文件,我想将它们压缩成一个.gz文件,当我解压缩时,我应该得到所有3个单独的文件。 我怎样才能做到这一点?

是否存在快速且非花哨的C#代码/算法来压缩接近最大信息密度的逗号分隔数字串?

简而言之,我通过创建执行行ID连接的CLR聚合将自己编程到一个角落,所以我说: select SumKeys(id), name from SomeTable where name=’multiple rows named this’ 我得到类似的东西: SumKeys name ——– ——— 1,4,495 multiple rows named this 但是当SumKeys获得超过8000个字符时它就会死掉,而我认为我无法做任何事情。 作为一个快速解决方案(它只有1%的时间用于我的应用程序)我认为我可能压缩字符串,我认为你们中的一些聪明的人可能知道一个光滑的方式来做到这一点。 类似于base64的0-9和逗号?

DotNetZip中大型文件存档的压缩问题

问候…. 我正在使用最新的DotNetZip在c#3.5中编写备份程序。 该程序的基础是在服务器上给出一个位置和一个跨区zip文件的最大大小。 从那里它应该遍历给定位置的所有文件夹/文件,并将它们添加到存档,保持确切的结构。 它还应将所有内容压缩到合理的数量。 给定的未压缩文件夹/文件集合可以很容易地为10-25gb,创建的跨区文件每个限制为大约1GB。 我有一切工作(使用DotNetZip)。 我唯一的挑战是实际发生的事情几乎没有。 我选择使用“AddDirectory”方法来简化代码,一般来说它看起来适合我的项目。 看完之后,我第二次猜测这个决定。 鉴于以下代码和存档中的大量文件,我应该压缩每个文件,因为它被添加到zip中吗? 或者Adddirectory方法是否应该提供相同的压缩? 我尝试过Ionic.Zlib.CompressionLevel提供的每个级别的压缩,似乎没有任何帮助。 我应该考虑使用外部压缩算法并将其流式传输到我的DotNetZip文件中吗? using (ZipFile zip = new ZipFile()) { zip.AddDirectory(root.FullName); if (zipPassword.Length > 0) zip.Password = zipPassword; float size = zipGbSize * 1024 * 1024 * 1024; zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; zip.AddProgress += new EventHandler(Zip_AddProgress); zip.ZipError += new EventHandler(Zip_ZipError); zip.Comment = “This zip was […]

我应该在SharpZipLib中选择哪种压缩类型?

我有一个文件传输应用程序,可以发送文件和文件夹。 (服务器 – 客户端) 我试图通过TCP(套接字)发送数据,我已经为传输数据的方式做了一些规则,所以如果它发送一个包含许多文件的大文件夹,它应该首先将它们压缩成一个zip文件然后当发送的zip文件,接收器必须解压缩它。 所以我决定使用SharpZibLib ,我对此有疑问。 我应该为我的应用选择哪种类型的压缩? 我读到了ZIP和GZIP之间的差异,发现GZIP有更好的压缩来减小尺寸,而且我以后不需要从GZIP文件中提取特殊文件,所以不需要使用ZIP而不是GZIP! 但是在那个库中有很多类型我还不知道,所以我应该使用GZIP还是其他类型对我的应用程序更好? PS: 首先是时间的优先级,使用SharpZipLib的目的是将(太多文件)放在一个文件中,这样发送的速度比发送(太多文件)的速度要快得多。 更多细节在这里 。

用于HTTP压缩的GZip或Deflate

哪种压缩方法更好? 我听说很多关于GZip被广泛使用的来回,但Deflate更快(在某些情况下)。 是否有一个可以使用的标准,为什么?

c#将非常大的位图保存为jpegs(或任何其他压缩格式)

我目前正在处理非常大的图像,这些图像基本上是通过拼接许多较小的图像(例如全景图或照片马赛克软件)生成的。 为了避免内存不足exception(在内存中只是如何排列较小图像的“地图”),我写了一些代码,使用BinaryWriter和LockBits逐行保存这些图像作为位图。 到现在为止还挺好。 现在问题是我想将这些图像保存为Jpegs(或PNG)。 由于我对c#很陌生,我现在只能想到两种方法: 1)类似于位图保存程序。 生成一些jpeg标题并逐行保存大图像,以前以某种方式压缩它们。 我不知道如何执行压缩。 2)将已保存的位图流式传输到内存中并将其保存为编码的jpeg。 由于第二种方法似乎更容易,我尝试过这样的事情: FileStream fsr = new FileStream(“input.bmp”, FileMode.Open, FileAccess.Read); FileStream fsw = new FileStream(“output.jpg”, FileMode.CreateNew, FileAccess.Write); EncoderParameters encoderParameters = new EncoderParameters(1); encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 80L); Bitmap bmp = new Bitmap(fsr); bmp.Save(fsw, GetEncoder(ImageFormat.Jpeg), encoderParameters); bmp.Dispose(); 现在的问题是save-method尝试首先将位图完全加载到内存中,从而导致内存不足exception。 如果有任何关于如何解决或避免这个问题的建议,我会非常高兴!