标签: sharpziplib

c#sharpziplib将文件添加到现有存档

我正在尝试使用以下代码将文件添加到现有存档.运行时不会显示任何错误或异常,但也不会将任何文件添加到存档中.有什么想法吗?

        using (FileStream fileStream = File.Open(archivePath, FileMode.Open, FileAccess.ReadWrite))
        using (ZipOutputStream zipToWrite = new ZipOutputStream(fileStream))
        {
            zipToWrite.SetLevel(9);

            using (FileStream newFileStream = File.OpenRead(sourceFiles[0]))
            {
                byte[] byteBuffer = new byte[newFileStream.Length - 1];

                newFileStream.Read(byteBuffer, 0, byteBuffer.Length);

                ZipEntry entry = new ZipEntry(sourceFiles[0]);
                zipToWrite.PutNextEntry(entry);
                zipToWrite.Write(byteBuffer, 0, byteBuffer.Length);
                zipToWrite.CloseEntry();

                zipToWrite.Close();
                zipToWrite.Finish();
            }
        }
Run Code Online (Sandbox Code Playgroud)

c# append add archive sharpziplib

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

使用SharpZipLib的C# - SharpZipLib与Winzip和XP的兼容性?

我正在使用CSharpZipLib库自动压缩一些文件.问题是生成的zip文件不适用于Winzip(版本8.1)或XP的压缩文件夹.它适用于7zip.

Winzip给出一个错误,该文件不是标准的Zip 2.0格式.

是否有一个我可以更改的参数可以使库以Winzip/XP兼容格式进行压缩?

c# sharpziplib

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

ICSharpCode.SharpZipLib验证zip文件

对C#使用ICSharpCode.SharpZipLib,我如何验证传递的文件实际上是一个有效的zip文件(不是右键单击并重命名为.zip的东西)?

[HttpPost]
        public ActionResult Upload(HttpPostedFileBase fileData)
        {
                if (fileData != null && fileData.ContentLength > 0)
                {
                    if (Path.GetExtension(fileData.FileName) == ".zip")
                    {
                        var zipFile = Server.MapPath("~/Content/uploads/" + Path.GetFileName(fileData.FileName));
                        fileData.SaveAs(zipFile);

                        FileStream fs = System.IO.File.OpenRead(zipFile);
                        ZipFile zf = new ZipFile(fs);

                        foreach (ZipEntry zipEntry in zf)
                        {
                            if (zipEntry.Name.EndsWith(".htm") || zipEntry.Name.EndsWith(".html"))
                            {
                                 return Json(new { success = true });                             
                            }
                        }
                        fs.Close();
                        fs.Dispose();
                        System.IO.File.Delete(zipFile);
                    }
                    else
                    {
                        var fileName = Server.MapPath("~/Content/uploads/" + Path.GetFileName(fileData.FileName));
                        fileData.SaveAs(fileName);                           
                        return Json(new { success = true });
                    }
                }                    
                return …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc sharpziplib icsharpcode

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

如何在Xamarin表单中解压缩下载的Zip文件

在我的应用程序中,我在My API调用期间收到包含4个pdf文档的ZIP文件.我正在使用以下代码保存ZIP文件.

var rootFolder = FileSystem.Current.LocalStorage;
var file = await rootFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

using (var fileHandler = await file.OpenAsync(FileAccess.ReadAndWrite))
{
    await fileHandler.WriteAsync(document, 0, document.Length);
}
Run Code Online (Sandbox Code Playgroud)

保存文档后,

我如何解压缩并单独将pdf文档保存到手机内存中.任何人都可以指示我解决这个问题.我找到了SharpZipLib和Iconic zip库来解压缩代码; 但是如果在文档中找到了dot net实现,则不知道如何在Xamarin Forms中集成它.

请帮忙.

sharpziplib dotnetzip xamarin xamarin.forms

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

SharpZipLib:1不是受支持的代码页

我使用SharpZipLib压缩文件,用户收到此错误:

1不是受支持的代码页

我在这里发现问题出在区域设置中,解决方案就在

"替换从Thread的OEMCodePage获取代码页的代码行,而不是硬编码合适的值."

但我没有找到任何代码示例来解决这个问题.

.net c# sharpziplib zipfile

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

我的申请有什么问题----大小是0,但我预计46806!

我是C#程序员.

现在,我正在使用ICSharpCode.SharpZipLib.dll在我当前的项目中创建一个zip文件.但是我发现当我在SECOND TIME点击按钮执行一个函数来创建一个zip文件时,应用程序会抛出异常,友好并且认真地告诉我"大小为零,但我预计46086".

我很困惑,我想知道为什么?当我第一次点击按钮时,我可以成功完成,没有任何错误.

我的相关代码如下:

internal void ThreadProc()
{
    try
    {
        ZipHelper.CreateZip(backupZipFile, Constants.HomeConstant, true);

        // do other things
    }

}
Run Code Online (Sandbox Code Playgroud)

CreateZip()函数的实现如下:

public static void CreateZip(string zipFileName, string sourceDirectory, bool recurse)
{
 FastZip zip = new FastZip();

 if (File.Exists(zipFileName))
 {
         File.Delete(zipFileName);
 }

 zip.CreateZip(zipFileName, sourceDirectory, true, "");
}
Run Code Online (Sandbox Code Playgroud)

现在,我将向您展示递归调用过程:

  1. 在"ActiveCheckManager"类中调用方法"UpdateAppAsync"
public void UpdateAppAsync(string masterConfig)
{
    this.masterConf = masterConfig;

    Thread actualThread = new Thread(new ThreadStart(UpdateApp));
    actualThread.IsBackground = true;
    actualThread.CurrentCulture = Thread.CurrentThread.CurrentCulture;
    actualThread.CurrentUICulture = Thread.CurrentThread.CurrentUICulture;
    actualThread.Start();
}
Run Code Online (Sandbox Code Playgroud)
  1. 异步调用UpdateApp函数,在UpdateApp方法中,它只会简单地调用UpdateDetail函数.
private void …
Run Code Online (Sandbox Code Playgroud)

c# sharpziplib icsharpcode

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

SharpZipLib:将单个文件压缩为单个压缩文件

我目前正在使用.NET 2.0下的SharpZipLib,因此我需要将单个文件压缩为单个压缩存档.为了做到这一点,我目前正在使用以下内容:

string tempFilePath = @"C:\Users\Username\AppData\Local\Temp\tmp9AE0.tmp.xml";
string archiveFilePath = @"C:\Archive\Archive_[UTC TIMESTAMP].zip";

FileInfo inFileInfo = new FileInfo(tempFilePath);
ICSharpCode.SharpZipLib.Zip.FastZip fZip = new ICSharpCode.SharpZipLib.Zip.FastZip();
fZip.CreateZip(archiveFilePath, inFileInfo.Directory.FullName, false, inFileInfo.Name);
Run Code Online (Sandbox Code Playgroud)

这应该是正确的(ish),但是在测试时我遇到了一个小问题.可以说我的临时目录(即包含未压缩输入文件的目录)包含以下文件:

tmp9AE0.tmp.xml //The input file I want to compress
xxx_tmp9AE0.tmp.xml // Some other file
yyy_tmp9AE0.tmp.xml // Some other file
wibble.dat // Some other file
Run Code Online (Sandbox Code Playgroud)

当我运行压缩时,所有.xml文件都包含在压缩归档中.这是因为fileFilter传递给CreateZip方法的最终参数.在引擎盖下,SharpZipLib正在执行模式匹配,这也会获取前缀为xxx_和的文件yyy_.我认为它也可以拾取任何后缀.

所以问题是,如何使用SharpZipLib压缩单个文件?然后,问题可能是我如何格式化,fileFilter以便匹配只能拿起我想要压缩的文件,而不是其他任何东西.

顺便说System.IO.Compression一句,有没有理由为什么不包括一个ZipStream班级?(它只支持GZipStream)

编辑:解决方案(源自Hans Passant的接受答案)

这是我实现的压缩方法:

private static void CompressFile(string inputPath, string outputPath)
{
    FileInfo …
Run Code Online (Sandbox Code Playgroud)

c# compression sharpziplib

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

SharpZipLib检查并选择ZIP文件的内容

我在项目中使用SharpZipLib,我想知道是否可以使用它来查看zip文件,如果其中一个文件中有一个数据在我正在搜索的范围内修改,那么选择该文件并复制它到一个新目录?有人知道这有可能吗?

c# zip sharpziplib

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

SharpZipLib使用内存中的字符串创建存档,并作为附件下载

我使用DotNetZip创建一个带有内存字符串的zip存档,并使用以下代码将其下载为附件.

byte[] formXml = UTF8Encoding.Default.GetBytes("<form><pkg>Test1</pkg></form>");
byte[] formHtml = UTF8Encoding.Default.GetBytes("<html><body>Test2</body></html>");

ZipFile zipFile = new ZipFile();
zipFile.AddEntry("Form.xml", formXml);
zipFile.AddEntry("Form.html", formHtml);
Response.ClearContent();
Response.ClearHeaders();
Response.AppendHeader("content-disposition", "attachment; filename=FormsPackage.zip");
zipFile.Save(Response.OutputStream); 
zipFile.Dispose();
Run Code Online (Sandbox Code Playgroud)

现在我需要对SharpZipLib做同样的事情.我该怎么做 ?SharpZipLib是否支持将文件添加为字节数组?

c# asp.net sharpziplib

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

使用SharpZipLib制作没有文件夹结构的.tar.gz存档

我正在尝试.tar.gz使用SharpZipLib从文件夹中找到文件列表.问题是无论如何传递文件路径 - 结果总是包含文件路径 - 而不仅仅是文件自身.我在这里失踪了什么?

string filesFolder = "c:\\testfolder\\test\\";
List<string> filesToZip = new List<string>() { filesFolder +"test1", filesFolder  +"test2"};

using (FileStream fs = new FileStream(filesFolder +"myGz.tar.gz" , FileMode.Create, FileAccess.Write, FileShare.None))
using (Stream gzipStream = new GZipOutputStream(fs))
using (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(gzipStream))
     {
      foreach (string filename in filesToZip )
      {
        {
          TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename);
          tarArchive.WriteEntry(tarEntry, false);
        }
      }
     }
Run Code Online (Sandbox Code Playgroud)

我得到的是一个"myGz.tar.gz"文件.当我尝试用7.zip打开它时 - 我在存档中获得完整的文件夹结构--c:\ testfolder\test \,并在其中 - "test1","test".

如何删除文件路径?

谢谢

.net c# sharpziplib

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