使用ZipFile.ExtractToDirectory方法时,Xamarin Android会抛出IOException

时间:2017-10-26 21:46:53

标签: c# android .net xamarin

我尝试在我的项目中使用以下代码而没有任何成功,这让我很生气。

System.IO.Compression.ZipFile.ExtractToDirectory(filePath, appPath);

参数是:

filePath = "/storage/emulated/0/Flashback_Backup/memory_backup.zip"
appPath = "/storage/emulated/0/Flashback"

根据文档here如果出现以下情况,则应抛出IOException:

  

destinationDirectoryName指定的目录已存在。    - 或 - 存档中的条目名称为空,仅包含空格,或至少包含一个无效字符。    - 或 - 提取存档条目将创建一个位于destinationDirectoryName指定的目录之外的文件。 (例如,   如果条目名称包含父目录,则可能发生这种情况   访问者。)    - 或 - 要提取的存档条目与已从同一存档中提取的条目具有相同的名称。

据我所知,这些都不适用。 zip文件是完全有效的,我使用Directory.CreateDirectory方法压缩,只包含一些唯一命名的JSON文件。我也试过没有现有的“闪回”文件夹,但似乎没有任何效果。

如果有人有任何想法或解决方案,请告诉我,因为我在此严重迷失。如果需要,我可以提供更多信息。

1 个答案:

答案 0 :(得分:1)

尝试包装提取介绍try-catch,它可以让您更好地了解正在发生的事情。

try {
    System.IO.Compression.ZipFile.ExtractToDirectory(filePath, appPath);
} catch (Exception ex) {
    Console.Log(ex);
}

如果出现错误,则会出现上面列出的错误之一。