我想在 Xamarin Forms 跨平台中创建一个 zip 文件。
我为每个平台(iOS 和 Android)使用自定义方式。
在 iOS 中使用 Library ZipArchive,但我没有找到适用于 Android 的替代方案。

所以我尝试使用原生方式(只用一个文件创建 zip),但 zip 文件创建为空。

public void Compress(string path, string filename, string zipname)
{
  var personalpath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
  string folder = Path.Combine(personalpath, path);
  string zippath = Path.Combine(folder, zipname);
  string filepath = Path.Combine(folder, filename);

  System.IO.FileStream fos = new System.IO.FileStream(zippath, FileMode.OpenOrCreate);
  Java.Util.Zip.ZipOutputStream zos = new Java.Util.Zip.ZipOutputStream(fos);

  ZipEntry entry = new ZipEntry(filename.Substring(filename.LastIndexOf("/") + 1));
  byte[] fileContents = File.ReadAllBytes(filepath);
  zos.Write(fileContents);
  zos.CloseEntry();
}

最佳答案

Leo Nix 和 OP 的解决方案。

需要关闭ZOS。
fos 和 zos 应该被处理掉。

  ...
  zos.CloseEntry();
  zos.Close();

  zos.Dispose();
  fos.Dispose();
}

10-08 18:20