2013-10-11 3 views
1

У меня есть следующий способ распаковать файл после загрузки. Но это с ошибкойxamarin ionic zip unzip вызывает ошибку

System.ArgumentException Путь пуст в System.IO.Directory.CreateDirectory. Путь System.String 0x00000 в файле неизвестен на ionic.zip.zipentry.internalExtract system.string basedir system.io.stream outstream system.string пароль 0x00000 в filname неизвестно.

файл почтового индекса не имеет пароля, и может быть с например открытой компанией андроид почтового

public void ExtractBilderZip() 
     { 
      string documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); 
      string unzipziel = Path.Combine(documentsPath, "Bilder"); 

      // if Bilder does not exist create subdirectory 
      if (Directory.Exists(unzipziel)==false) 
      { 
       var directoryname = Path.Combine(documentsPath, "Bilder"); 
       Directory.CreateDirectory(directoryname); 

      } 

      ////////////////////////////////////////////////////// 
      string zipToUnpack = localPathB; //localPathB ist the zipFile name including path 

      // I tried with and wihout the following 2 lines which makes no diffence 
      zipToUnpack = zipToUnpack.Replace('/', Path.DirectorySeparatorChar); 
      unzipziel = unzipziel.Replace('/', Path.DirectorySeparatorChar); 


      try 
      { 


       ZipFile zip1 = ZipFile.Read(zipToUnpack); 

       zip1.ExtractAll(unzipziel,ExtractExistingFileAction.OverwriteSilently); 


      } 
      catch (System.Exception ex1) 
      { 
       //System.Console.Error.WriteLine("exception: " + ex1); 
       for (int i = 0; i < 10; i++) 
       { 
        Toast.MakeText(this, "exception: " + ex1, ToastLength.Long).Show(); 
       } 
      } 





     } 
+0

Я решил свою проблему с помощью класса под названием ZipStorer, который я нашел путем googleing. Я нашел его здесь: https://zipstorer.codeplex.com/ Это крошечный и очень простой в использовании! – user1230268

ответ

1

я решил мою проблему путем использованием класса под названием ZipStorer, который я нашел на googleing. Я нашел его здесь: zipstorer.codeplex.com Это крошечный и очень простой в использовании!

FileInfo fi = new FileInfo (zipToUnpack);

  FileStream inFile = fi.OpenRead(); 

       // Get original file extension, 
       // for example "doc" from report.doc.cmp. 
      string curFile = fi.FullName; 
      string origName = unzipziel; 


      try 
      { 
       // Opens existing zip file 
       ZipStorer zip = ZipStorer.Open(localPathB, FileAccess.Read); 

       // Read all directory contents 
       List<ZipStorer.ZipFileEntry> dir = zip.ReadCentralDir(); 


       // Extract all files in target directory 
       string path; 
       bool result; 
       foreach (ZipStorer.ZipFileEntry entry in dir) 
       { 
        path = Path.Combine(unzipziel, Path.GetFileName(entry.FilenameInZip)); 
        result = zip.ExtractFile(entry, path); 

        RunOnUiThread(() => 
        { 
         Button buttonUZ = FindViewById<Button>(Resource.Id.btnUnzip); 
         buttonUZ.Text = "Entpacke: " + entry.FilenameInZip; 

        }); 

       } 
       zip.Close(); 

       File.Delete(@localPathB); 

      } 
      catch (Exception ex1) 
      { 
       var errorActivity = new Intent(this, typeof(ErrorActivity)); 
       errorActivity.PutExtra("ERROR", ex1.ToString()); 

       StartActivity(errorActivity); 

      } 
Смежные вопросы