【问题标题】:How to zip files in windows mobile 3.5?如何在 windows mobile 3.5 中压缩文件?
【发布时间】:2012-02-05 04:09:50
【问题描述】:

我正在尝试使用 DotNetZip 的Ionic.Zip.dll 压缩文件的方法。

压缩代码:

using Ionic.Zip;
public string Compress(string[] Paths, string SaveFileName, string Password, string CompressionType)
    {
        try
        {
            using (ZipFile zip = new ZipFile())
            {
                if (Password != string.Empty)
                    zip.Password = Password;
                zip.CompressionLevel = Utility.GetCompressionLevel(CompressionType);
                foreach (string item in Paths)
                {
                    if (IsDirectory(item))
                        zip.AddDirectory(item);
                    else if (IsFile(item))
                        zip.AddFile(item);
                }
                zip.Save(SaveFileName);
            }
            return ExplorerResource.ResourceManager.GetString("ZipSuccess");
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }  

自定义类:

public class Utility
    {
        public static Ionic.Zlib.CompressionLevel GetCompressionLevel(string Expression)
        {
            Ionic.Zlib.CompressionLevel result = Ionic.Zlib.CompressionLevel.None;
            if (Ionic.Zlib.CompressionLevel.BestCompression.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.BestCompression;
            if (Ionic.Zlib.CompressionLevel.BestSpeed.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.BestSpeed;
            if (Ionic.Zlib.CompressionLevel.Default.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Default;
            if (Ionic.Zlib.CompressionLevel.Level0.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Level0;
            if (Ionic.Zlib.CompressionLevel.Level1.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Level1;
            if (Ionic.Zlib.CompressionLevel.Level2.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Level2;
            if (Ionic.Zlib.CompressionLevel.Level3.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Level3;
            if (Ionic.Zlib.CompressionLevel.Level4.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Level4;
            if (Ionic.Zlib.CompressionLevel.Level5.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Level5;
            if (Ionic.Zlib.CompressionLevel.Level6.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Level6;
            if (Ionic.Zlib.CompressionLevel.Level7.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Level7;
            if (Ionic.Zlib.CompressionLevel.Level8.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Level8;
            if (Ionic.Zlib.CompressionLevel.Level9.ToString().ToUpper() == Expression.Trim().ToUpper())
                result = Ionic.Zlib.CompressionLevel.Level9;

            return result;
        }

ZIP 程序的 GUI:

但是当我开始压缩文件时出现此错误。

我认为代码与 .net 版本不兼容?
我希望有人可以为此制定解决方案,或者如果您有更好的方法,请告诉我..提前致谢!

【问题讨论】:

    标签: c# dll windows-mobile pocketpc


    【解决方案1】:

    您需要至少下载 dotnetzip 的 1.7 版,然后使用紧凑的框架特定版本(即 Ionic.Zip.CF.dll)。

    【讨论】:

      【解决方案2】:

      我建议你可以使用 Sevenzipsharp ,它被 7-zip 使用过,因为它有很好的性能。 Sevenzipsharp on codeplex

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 2012-03-22
        • 2021-09-12
        • 2012-06-30
        • 2011-10-30
        • 1970-01-01
        相关资源
        最近更新 更多