2014-05-12 68 views
-2

我正在創建一個程序,以將某個文件從一個文件夾轉換爲一個二進制文件,以便以後可以從二進制文件讀取文件。 所以我創建了一個archivation方法,但我真的不知道我怎麼可以讀取二進制文件,但不拆包他們...將文件和文件夾打包到單個文件

一些代碼:

public static void PackFiles() 
{ 
    using (var doFile = File.Create("root.extension")) 
    using (var doBinary = new BinaryWriter(doFile)) 
    { 
     foreach (var file in Directory.GetFiles("Data")) 
     { 
      doBinary.Write(true); 
      doBinary.Write(Path.GetFileName(file)); 
      var data = File.ReadAllBytes(file); 
      doBinary.Write(data.Length); 
      doBinary.Write(data); 
     } 
     doBinary.Write(false); 
    } 
} 

而且,我可以設置一種的密碼到二進制文件,所以只有在密碼已知的情況下,才能解密archieve?

P.S:我不需要拉鍊:)

+0

讀回你需要創建一個方法可以讓你知道文件或它告訴你在哪裏各種文件開始和結束。對於密碼,您必須在二進制文件中存儲密碼的哈希值,然後讓讀取該二進制文件的應用程序詢問密碼並將其與二進制文件中的哈希值進行比較。 –

+1

你爲什麼不寫一個zip文件? – Jon

+2

您可以使用[dotnetzip](http://dotnetzip.codeplex.com/)進行打包,解包和使用密碼。 –

回答

2

我覺得去使用ZIP這種情況的最好辦法。

有一個叫dotnetzip

例使用密碼堅實和快速庫:

using (ZipFile zip = new ZipFile()) 
{ 
    zip.Password= "123456!"; 
    zip.AddFile("ReadMe.txt"); 
    zip.AddFile("7440-N49th.png"); 
    zip.AddFile("2005_Annual_Report.pdf");   
    zip.Save("Backup.zip"); 
} 
相關問題