Windows.Storage.Compression解压缩压缩文件夹

时间:2017-08-15 03:46:06

标签: cordova uwp .net-core compression

我正在开发一个只能使用.Net Core库的UWP应用程序。我一直在尝试实现一个zip / unzip工具。我有几个问题,Windows.Storage.Compression是否支持标准的GZIP / ZIP文件格式?我已经编写了一些测试代码来提取在Windows中创建的ZIP,但它返回一个0字节长的文件。

var sourceFilename = "test.zip";
      var sourceFile = await ApplicationData.Current.TemporaryFolder.GetFileAsync(sourceFilename);

      var decompressedFilename = "test.xlsx"; // sourceFile.Name + ".decompressed";
      var decompressedFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(decompressedFilename, CreationCollisionOption.GenerateUniqueName);

      //Read the file stream
      using (var compressedInput = await sourceFile.OpenSequentialReadAsync())
      using (var decompressor = new Decompressor(compressedInput))
      using (var decompressedOutput = await decompressedFile.OpenAsync(FileAccessMode.ReadWrite))
      {
        var bytesDecompressed = await RandomAccessStream.CopyAsync(decompressor, decompressedOutput);     
      }

如上所述,它返回零长度文件。

除了这个问题之外,我真的想开发一种方法来使用system.windows.compression将一个现有的zip(我有数百个带有数千个项目)提取到一个文件夹中。 (我在Android和IOS平台上运行良好,但在UWP 10中无法看到如何完成这个简单的任务(系统无法使用System.IO.Compression.ZipFile - 由于Cordova UWP Windows 10的限制)。

我已经完成了https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/Compression/js - 这是文件样本来自上面但又无法打开使用Windows 10或7Z制作的.zip。

1 个答案:

答案 0 :(得分:-1)

  

除了这个问题之外,我真的想开发一种方法来使用system.windows.compression将一个现有的zip(我有数百个带有数千个项目)提取到一个文件夹中。 (我在Android和IOS平台上运行良好,但在UWP 10中无法看到如何完成这个简单的任务(系统无法使用System.IO.Compression.ZipFile - 由于Cordova UWP Windows 10的限制)。

您可以使用Cordova-plugin-zeep提取现有的zip文件。或者您可以使用System.IO.Compression.ZipFile创建自己的插件,例如this用于zip / unzip逻辑。有关详细信息,请参阅Creating a Windows Plugin in C++ or managed code