2014-05-12 37 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"); 
} 
相关问题