2016-04-19 64 views
0

爲了節省空間,我在UWP項目中壓縮了我的書籍(以xml格式)。我想根據它的名稱將一個文件解壓到我的本地文件夾。從UWP檔案中提取特定文件

到現在我做了什麼(這將提取所有文件):

ZipFile.ExtractToDirectory(sourceCompressedFile.Path, destinationFolder.Path); 

然而這個提取從我的所有的文件我的目標文件夾。我知道這可能是一個微不足道的任務,使用SharpZipLib,但這是一種內置方法,可以幫助我減小應用程序的大小。我只想提取名稱與我提供的名稱相匹配的文件。除此之外還有三種方法,但我失去了使用它們的方式。

這可以很容易地使用DotNetZip所看到here但我不希望使用任何第三方庫來完成

回答

0

我想你已經拉上一個zip壓縮包幾個文件,所以將ZipFile.ExtractToDirectory Method (String, String)提取所有文件在指定的zip存檔中轉到一個目錄。

如果你只是想訪問一個特殊的文件,在這個壓縮文檔,可以使用ZipArchiveEntry Class來實現這項工作,例如在這裏:

StorageFolder _folder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Assets"); 
/*fails here FileNotFound*/ 
StorageFile sourceCompressedFile = await _folder.GetFileAsync("archived.zip"); 

StorageFolder folder = ApplicationData.Current.LocalFolder; 

// ZipFile.ExtractToDirectory(file.Path, folder.Path); 

using (ZipArchive archive = ZipFile.OpenRead(sourceCompressedFile.Path)) 
{ 
    foreach (ZipArchiveEntry entry in archive.Entries) 
    { 
     if (entry.FullName.ToString() == "miao2.jpg") 
     { 
      entry.ExtractToFile(Path.Combine(folder.Path, entry.FullName)); 
     } 
    } 
} 

我拉上幾個畫面的「archived.zip」文件爲了測試,在本示例中,它只會提取名爲「miao2.jpg」的圖像文件。