我正在开发一个只能使用.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。
答案 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。