2017-08-15 139 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的模塊,但都失敗,出現庫錯誤,說庫找不到。我錯過了什麼? –