我尝试在我的项目中使用以下代码而没有任何成功,这让我很生气。
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文件。我也试过没有现有的“闪回”文件夹,但似乎没有任何效果。
如果有人有任何想法或解决方案,请告诉我,因为我在此严重迷失。如果需要,我可以提供更多信息。
答案 0 :(得分:1)
尝试包装提取介绍try-catch,它可以让您更好地了解正在发生的事情。
try {
System.IO.Compression.ZipFile.ExtractToDirectory(filePath, appPath);
} catch (Exception ex) {
Console.Log(ex);
}
如果出现错误,则会出现上面列出的错误之一。