2017-08-15 141 views
0

我正在研究只能使用.Net核心库的UWP应用程序。我一直在试图实现一个zip/unzip工具。 Windows.Storage.Compression支持标准的GZIP/ZIP文件格式吗?我写了一些测试代码来提取我在Windows中创建的ZIP,但它返回一个0字节长度的文件。Windows.Storage.Compression UnZip压缩文件夹

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);  
     } 

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

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

我已经通过https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/Compression/js工作 - 这是文件样本从上方传来却又无法打开与Windows 10或7Z制成的.zip

回答

0

而且对于这个问题我真的想开发一种方法来提取现有zip(我有成百上千的项目)使用system.windows.compression到一个文件夹中(我在Android和iOS平台上工作得很好,但无法看到如何在UWP 10中完成这个简单的任务系统不能使用System.I O.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

+0

但是在UWP Cordova 7下,由于REMOTE模式,我只能使用.Net Core中的代码。我尝试使用几个使用ZipFile的模块,但都失败,出现库错误,说库找不到。我错过了什么? –