2016-04-26 69 views
0

我繼承了一些利用ZipArchive從數據庫中保存一些信息的代碼。它使用BinaryFormatter來做到這一點。當您查看帶有7-Zip的zip文件時(例如),您會看到幾個文件夾和一個.txt文件。一切正常。我只是想修改代碼,在ZipArchive中還有一個名爲「temp」的文件夾,它由C:\ temp下的文件和文件夾組成。是否有一種簡單的方法來添加由整個文件夾或光盤組成的條目(ZipArchiveEntry?)?我在ZipArchive的成員方法中看到了「CreateEntryFromFile」,但沒有看到CreateEntryFromDirectory。或者也許還有其他一些簡單的方法來做到這一點?任何人都有示例代碼?我應該說,C:\ temp可能有可變數量的文件和目錄(有子目錄和文件等)。我必須枚舉它們,創建我自己的目錄使用CreateEntryFromFile?任何幫助表示讚賞。使用.NET ZipArchive壓縮整個目錄以及額外信息

同樣,當我讀了ZipArchive,我想利用與C中的東西:\ TEMP和公正傾倒在一個目錄(如C:\ temp_old) 謝謝, 戴夫

回答

0

答案通過user1469065在Zip folder in C#爲我工作。 user1469065顯示如何獲取目錄中的所有文件/目錄(使用一些很酷的「yield」語句),然後執行序列化。爲了完整起見,我添加了反序列化的代碼,正如user1469065的建議(至少我認爲我是按照他的建議)。

private static void ReadTempFileStuff(ZipArchive archive) // adw 
    { 
     var sessionArchives = archive.Entries.Where(x => x.FullName.StartsWith(@"temp_directory_contents")).ToArray(); 
     if (sessionArchives != null && sessionArchives.Length > 0) 
     { 
      foreach (ZipArchiveEntry entry in sessionArchives) 
      { 
       FileInfo info = new FileInfo(@"C:\" + entry.FullName); 
       if (!info.Directory.Exists) 
       { 
        Directory.CreateDirectory(info.DirectoryName); 
       } 
       entry.ExtractToFile(@"C:\" + entry.FullName,true); 
      } 
     } 
    }