2012-01-08 10 views
1

DotNetZipのIonic.Zip.dllを使用してファイルを圧縮する方法を作成しようとしています。Windows Mobile 3.5でファイルを圧縮する方法は?

圧縮のためのコード:

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; 
     } 
    } 

カスタムクラス:ZIPプログラムの

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; 
     } 

GUI:

enter image description here

しかし、私は圧縮を開始するとき、私はこのエラーを取得していますファイル。

enter image description here

私は、コードを.NETバージョンとの互換性がありませんと思いますか?
私は誰かがこれのための解決策を作ることができることを望む、またはあなたが方法を実行するより良い方法を持っている場合は教えてください..事前に感謝!

答えて

1

少なくともバージョン1.7のdotnetzipをダウンロードしてから、コンパクトなフレームワーク固有のバージョン(Ionic.Zip.CF.dllなど)を使用する必要があります。

+0

ワウ!迅速かつ正確な対応!それは今働く。どうもありがとう! – fiberOptics

0

Sevenzipsharpは、7-zipで使用されていることをお勧めします。これはパフォーマンスが優れているためです。 Sevenzipsharp on codeplex

関連する問題