2016-04-19 16 views
0

スペースを節約するために、自分のUWPプロジェクトで書籍を(XML形式で)圧縮しました。私は、その名前に基づいてローカルフォルダにファイルを抽出したいと思います。今、私がやっていることティルUWPのアーカイブから特定のファイルを抽出する

(これはすべてのファイルを抽出します):

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

しかし、これは私の先のフォルダに私のアーカイブからすべてのファイルを抽出します。私はこれがSharpZipLibを使用して些細な作業になる可能性があることを知っていますが、これは組み込みの方法であり、私のアプリケーションのサイズを縮小するのに役立ちます。私は単に私が提供する名前と一致する名前のファイルを抽出したいと思う。これ以外にも3つの方法がありますが、私はそれらを使って自分の道を失いました。

here見られるように、これはDotNetZipを使用して簡単に行うことができますが、私は任意のサードパーティのライブラリ

答えて

0

を使用したくない、私はあなたが1つのzipアーカイブにzip形式のファイルをいくつか持っていると思うので、ZipFile.ExtractToDirectory Method (String, String)は、すべてのファイルを抽出します指定されたzipアーカイブのディレクトリに移動します。

あなたはこのzip形式のアーカイブに1つの特殊なファイルにアクセスしたい場合は、ここで例えば、この仕事を達成するためにZipArchiveEntry Classを使用することができます。私は「archived.zip」ファイルとして複数の画像をzip形式で圧縮

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

テストの場合、このサンプルでは、​​「miao2.jpg」という名前の画像ファイルのみが抽出されます。

関連する問題