【问题标题】:Xamarin Android throws IOException when using ZipFile.ExtractToDirectory methodXamarin Android 在使用 ZipFile.ExtractToDirectory 方法时抛出 IOException
【发布时间】:2017-10-26 21:46:53
【问题描述】:

我尝试在我的项目中使用以下代码但没有成功,这让我发疯。

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 文件。我也尝试过使用和不使用现有的“闪回”文件夹,但似乎没有任何效果。

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

【问题讨论】:

  • 你检查你的权限了吗?
  • 我添加了 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 以及一些不相关的。我觉得应该够了,还是我错过了什么?

标签: c# android .net xamarin


【解决方案1】:

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

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

如果有错误,它将是您上面列出的错误之一。

【讨论】:

  • 感谢您的回答,这是一个无效参数错误。仍然不知道是什么导致了问题。我尝试在路径中不使用“_”,但没有任何变化。
猜你喜欢
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多