【问题标题】:xamarin ionic zip unzip causes errorxamarin ionic zip unzip 导致错误
【发布时间】:2018-07-17 15:48:59
【问题描述】:

我有以下方法在下载后解压缩文件。但它以错误结束

System.ArgumentException 路径为空 System.IO.Directory.CreateDirectory System.String 文件中的路径 0x00000 ionic.zip.zipentry.internalExtract system.string basedir 未知 system.io.stream outstream system.string 密码 0x00000 in 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();
        }
    }
}

【问题讨论】:

    标签: android zip xamarin


    【解决方案1】:

    我通过使用一个名为ZipStorer 的类解决了我的问题,我通过谷歌搜索找到了该类。我在这里找到了它: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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多