我在提取码工作,解压缩zip文件,在WinRT中使用C#
I am working on Extraction Code to Extract Zip file, Using C# in winrt.
我收到来自本地驱动器这里文件:
I am getting File from Local Drive here:
StorageFile file = await KnownFolders.PicturesLibrary.GetFileAsync("dostoyevsky-poor-folk.zip"); Stream zipMemoryStream = await file.OpenStreamForReadAsync(); var folder = ApplicationData.Current.LocalFolder; // Create zip archive to access compressed files in memory stream using (ZipArchive zipArchive = new ZipArchive(zipMemoryStream, ZipArchiveMode.Read)) { // For each compressed file... foreach (ZipArchiveEntry entry in zipArchive.Entries) { if (entry.Name == "") { // Folder await CreateRecursiveFolder(folder, entry); } else { // File await ExtractFile(folder, entry); } } }
我提取对于文件夹位置
I am Extracting For folder here:
private async Task CreateRecursiveFolder(StorageFolder folder, ZipArchiveEntry entry) { var steps = entry.FullName.Split('/').ToList(); steps.RemoveAt(steps.Count() - 1); foreach (var i in steps) { await folder.CreateFolderAsync(i, CreationCollisionOption.OpenIfExists); folder = await folder.GetFolderAsync(i); } }
我提取对于文件位置:
I am Extracting For File Here:
private async Task ExtractFile(StorageFolder folder, ZipArchiveEntry entry) { var steps = entry.FullName.Split('/').ToList(); steps.RemoveAt(steps.Count() - 1); foreach (var i in steps) { folder = await folder.GetFolderAsync(i); } using (Stream fileData = entry.Open()) { StorageFile outputFile = await folder.CreateFileAsync(entry.Name, CreationCollisionOption.ReplaceExisting); using (Stream outputFileStream = await outputFile.OpenStreamForWriteAsync()) { await fileData.CopyToAsync(outputFileStream); await outputFileStream.FlushAsync(); } } }当我尝试使用此我得到这个异常:System.NullReferenceException。 除外越来越线是等待outputFileStream.FlushAsync()的最后一行;
When I try to use this I get this exception: 'System.NullReferenceException' . The Exception getting line is the Last line of await outputFileStream.FlushAsync();
有些时候,我得到相同的异常,当我尝试从本地驱动器挑文件。 之前获得异常等待outputFileStream.FlushAsync()这样看。
Some times I am getting same exception when I try to pick file from Local Drive. Before Getting Exception the Debugger value of await outputFileStream.FlushAsync() looking like this.
您可以帮我出这一点。
感谢
推荐答案最后,这是为我工作。为什么?因为我得到空值,而因为我要去的地方解压缩文件包的提取。 我相信这是提取使用的C#Windows Store应用程序的Zip文件的完美解决方案。 谢谢
Finally, It is Worked for me. Why because I am getting Null value while extraction Because of the package where I am going to extract files. I am sure this is the perfect solution to Extract Zip file for windows store apps using c#. Thanks
更多推荐
除了在C#中提取Zip文件
发布评论