Как заархивировать файлы в Windows Mobile 3.5? - PullRequest
1 голос
/ 08 января 2012

Я пытаюсь создать метод сжатия файла, используя Ionic.Zip.dll из DotNetZip.

Код для сжатия:

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:

enter image description here

Но я получаю эту ошибку, когда начинаю сжимать файл.

enter image description here

Я думаю, что код не совместим с версией .net?
Я надеюсь, что кто-то может найти решение для этого, или если у вас есть лучший способ сделать метод, пожалуйста, скажите мне .. Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 08 января 2012

Вам необходимо загрузить по крайней мере версию 1.7 из dotnetzip , а затем использовать компактную версию, специфичную для фреймворка (т.е. Ionic.Zip.CF.dll).

0 голосов
/ 08 января 2012

Я предлагаю вам использовать Sevenzipsharp, он использовался 7-zip, потому что он имеет хорошую производительность. Sevenzipsharp на codeplex

...