2016-04-19 14 views
0

Um Platz zu sparen habe ich meine Bücher (im xml-Format) in meinem UWP-Projekt gezippt. Ich möchte eine Datei basierend auf ihrem Namen in meinen lokalen Ordner extrahieren.Extrahieren bestimmter Datei aus dem Archiv in UWP

bis jetzt, was ich getan habe (Diese extrahiert alle Dateien):

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

jedoch diese extrahiert alle Dateien aus meinem Archiv zu meinem Zielordner. Ich weiß, dass dies eine triviale Aufgabe sein könnte mit SharpZipLib aber das ist eine eingebaute Methode und würde mir helfen, meine App Größe zu reduzieren. Ich möchte einfach eine Datei extrahieren, deren Name mit einem von mir angegebenen Namen übereinstimmt. Es gibt drei andere Methoden als diese, aber ich habe meinen Weg damit verloren.

Diese leicht DotNetZip als here gesehen mit getan werden kann, aber ich will nicht Bibliothek irgendwelche Dritte

Antwort

0

Ich glaube, Sie haben mehrere Dateien gezippt in ein ZIP-Archiv verwenden, so dass die ZipFile.ExtractToDirectory Method (String, String) alle Dateien extrahieren im angegebenen Zip-Archiv in ein Verzeichnis.

Wenn Sie nur eine spezielle Datei in diesem ZIP-Archiv zugreifen möchten, können Sie ZipArchiveEntry Class verwenden, diese Arbeit zu erreichen, zum Beispiel hier:

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

ich mehrere Bilder als „archived.zip“ Datei gezippt Für den Test wird in diesem Beispiel nur die Bilddatei "miao2.jpg" extrahiert.

Verwandte Themen