标签: sharpziplib

在多个线程上并行调用ICsharpCode.SharpZipLib是否安全

我们目前正在使用压缩ICsharpCode.SharpZipLib库的GZipOutputStream类.我们从一个线程做到这一点.

我想将输入数据流拆分为块并并行压缩它们.我担心这个库可能有一些静态内部将被多个线程覆盖,因此破坏了生成的流.

任何想法将不胜感激.

.net zip multithreading sharpziplib

4
推荐指数
2
解决办法
2841
查看次数

使用 SharpZipLib 解压 .tar.gz

我正在尝试将 tar.gz 解压缩到一个 zip 中,但我不能

\n\n

它向我显示错误 \xe2\x80\x9ccannot findcentraldirectory\xe2\x80\x9d 并且我不\xe2\x80\x99t 不知道该怎么做。

\n\n

首先,我将 zip 解压到临时文件夹上,然后在该文件夹上搜索 .tar.gz 并尝试解压,但因该错误而崩溃,但我可以使用 winrar 应用程序打开它,.tar.gz 有一些文件夹和一些里面的文件。

\n\n

这是我的代码:

\n\n
var trash = Path.Combine(_temporalPath, "Trash");\n        try\n        {\n            var zip = new FastZip();\n            Directory.CreateDirectory(trash);\n            zip.ExtractZip(_origin, trash, "");\n            var gzip = Directory.GetFiles(trash, "*.tar.gz")[0];\n            zip.ExtractZip(gzip, trash, FastZip.Overwrite.Always.ToString());\n            File.Delete(gzip);\n        }\n        catch (Exception)\n        {\n            //IGNORE\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我搜索信息,但只找到解压一个文件。\n在此处输入图像描述

\n\n

我需要的是打开 tar.gz 并从里面获取文件。

\n

c# gzip tar sharpziplib

4
推荐指数
1
解决办法
1万
查看次数

SharpZipLib 提取的文件大小

有没有办法找出解压后未解压存档的总大小。

c# sharpziplib

3
推荐指数
1
解决办法
1376
查看次数

sharpziplib +提取单个文件

每当我尝试获取文件时,输入流的长度(s.Length)总是为零,我做错了什么?ZipEntry是有效的,具有适当的文件大小等.

这是我使用的代码:

public static byte[] GetFileFromZip(string zipPath, string fileName)
{
    byte[] ret = null;
    ZipFile zf = new ZipFile(zipPath);
    ZipEntry ze = zf.GetEntry(fileName);

    if (ze != null)
    {
        Stream s = zf.GetInputStream(ze);
        ret = new byte[s.Length];
        s.Read(ret, 0, ret.Length);
    }

    return ret;
}
Run Code Online (Sandbox Code Playgroud)

c# sharpziplib

3
推荐指数
1
解决办法
4604
查看次数

如何在Windows Phone 7中提取zip文件?

我的Windows Phone 7项目中有一个zip文件.我已将Build Action to Content和Copy to output目录设置为Always.zip文件包含文件夹结构.我希望这完全复制,因为它在我的电话项目中.我正在使用SharpZipLib.这是代码: -

 Stream stremInfo = Application.GetResourceStream(new Uri("xip.zip", UriKind.Relative)).Stream;



        new FastZip(). ExtractZip(stremInfo,
            "",FastZip.Overwrite.Always,null,null,null,true,true);
Run Code Online (Sandbox Code Playgroud)

但是,在调用ExractZip时出现错误.我得到的例外是" MethodAccessException".不能打电话GetFullPath().任何人都可以让我知道我错过了什么?我该怎么做才能避免它?

silverlight sharpziplib windows-phone-7

3
推荐指数
1
解决办法
1万
查看次数

使用 SharpZipLib 压缩大文件导致内存不足异常

我有一个 453MB XML 文件,我正在尝试使用SharpZipLib将其压缩为 ZIP 。

下面是我用来创建 zip 的代码,但它导致了OutOfMemoryException. 此代码成功压缩了 428MB 的文件。

知道为什么会发生异常,因为我不明白为什么,因为我的系统有足够的可用内存。

public void CompressFiles(List<string> pathnames, string zipPathname)
{
    try
    {
        using (FileStream stream = new FileStream(zipPathname, FileMode.Create, FileAccess.Write, FileShare.None))
        {
            using (ZipOutputStream stream2 = new ZipOutputStream(stream))
            {
                foreach (string str in pathnames)
                {
                    FileStream stream3 = new FileStream(str, FileMode.Open, FileAccess.Read, FileShare.Read);
                    byte[] buffer = new byte[stream3.Length];
                    try
                    {
                        if (stream3.Read(buffer, 0, buffer.Length) != buffer.Length)
                        {
                            throw new Exception(string.Format("Error reading '{0}'.", str));
                        }
                    }
                    finally
                    { …
Run Code Online (Sandbox Code Playgroud)

c# compression out-of-memory sharpziplib

3
推荐指数
1
解决办法
4714
查看次数

如何使用SharpZipLib库仅压缩没有文件夹的文件?(C#)

我使用以下代码创建一个zip文件:

var files = Directory.GetFiles(targetPath);
var zip = ZipFile.Create(targetPath + "/myzip.zip");
zip.BeginUpdate();
foreach (var file in files) zip.Add(file, CompressionMethod.Deflated);
zip.CommitUpdate();
zip.Close();
Run Code Online (Sandbox Code Playgroud)

我得到以下存档结构:

myzip.zip
   - Folder1
      - Folder2
        - File1.txt
        - File2.txt
        - File3.txt
Run Code Online (Sandbox Code Playgroud)

但是我需要:

myzip.zip
  - File1.txt
  - File2.txt
  - File3.txt
Run Code Online (Sandbox Code Playgroud)

请帮忙.

c# sharpziplib

2
推荐指数
1
解决办法
2072
查看次数

SharpZipLib - 将 ZipEntry 添加到 ZipFile 会引发 ZipException

我正在尝试使用内存字符串中的文件创建 ZIP 并保存它。到目前为止,这是我的代码:

var zip = ZipFile.Create(Path.Combine(outputPath, fileName));
zip.BeginUpdate();

var fileStream = new MemoryStream(Encoding.Default.GetBytes(myStringVariable));
var outputMemStream = new MemoryStream();
var zipStream = new ZipOutputStream(outputMemStream);
var zipEntry = new ZipEntry("file.html");

zipEntry.DateTime = DateTime.Now;
zipStream.PutNextEntry(zipEntry);
StreamUtils.Copy(fileStream, zipStream, new byte[4096]);
zipStream.CloseEntry();
zip.Add(zipEntry);

zip.CommitUpdate();
zip.Close();
Run Code Online (Sandbox Code Playgroud)

然而它在 zip.Add(zipEntry); 上中断了。并抛出异常:

ZipException - 条目不能有任何数据

不知何故,我无法弄清楚出了什么问题。

c# sharpziplib

2
推荐指数
1
解决办法
5030
查看次数

如何动态地将文件添加到存储在 Azure Blob 存储中的 zip 存档中?

我在 Azure 中有一个进程,可以生成大量 pdf 报告文件并将它们存储在 blob 存储中。我不是单独发送所有这些内容的链接,而是生成一个 zip 文件并将此链接发送给用户。

这个过程全部在一个进程中完成,并且一直运行良好。最近,我在将文件添加到 zip 存档时遇到了 OutOfMemory 异常错误,并且我正在努力寻找解决方案。

下面是我用来创建 zip 文件的代码(注意:使用 SharpLibZip 库)。目前,在添加大约 45 个每个文件 (PDF) 大约 3.5Mb 的文件后,它会失败并出现 OutOfMemoryException。当我点击以下行时发生故障:zipStream.PutNextEntry(newEntry)。

有谁知道我如何改进这个过程?压缩文件太小似乎会在这个级别失败。

Using outputMemStream As New MemoryStream()

    Using zipStream As New ICSharpCode.SharpZipLib.Zip.ZipOutputStream(outputMemStream)
          zipStream.SetLevel(7)

          Dim collD3 As UserSurveyReportCollection = GetFileList(RequestID)

          For Each entityD2 As UserSurveyReport In collD3

              Try
                  Dim strF As String = entityD2.FileLocation

                 'Download blob as memorystream and add this stream to the zip file
                 Dim msR As New MemoryStream 
                 msR = objA.DownloadBlobAsMemoryStream(azureAccount, ReportFolder, entityD2.FileName) …
Run Code Online (Sandbox Code Playgroud)

c# zip sharpziplib azure azure-storage

2
推荐指数
1
解决办法
4891
查看次数

使用 SharpZipLib 提取 7z 文件时出现“找不到中心目录”错误

.zip 文件没有问题,但只有 7z。

 FileStream fs = File.OpenRead(archiveFilenameIn);
            zf = new ZipFile(fs); // This is where we encountered an error
Run Code Online (Sandbox Code Playgroud)

c# sharpziplib

1
推荐指数
1
解决办法
1万
查看次数