将文件和文件夹打包到一个文件中

时间:2014-05-12 07:20:10

标签: c# binary packing

我想创建一个程序来将文件夹中的某些文件转换为单个二进制文件,以便稍后我可以从二进制文件中读取文件。 所以我创建了一个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); 
    }
}

另外,我可以为二进制文件设置一种“密码”,这样只有知道了密码才能解压缩吗?

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

1 个答案:

答案 0 :(得分: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");
}