我想要的功能: 1.将文件和文件夹压缩到存档中。 2.密码保护它 3.可以选择排除子目录中的子目录。
我试过了:
dotnetzip: 拥有除排除文件夹的简单方法之外的所有内容。它确实有一种排除文件夹的方法,但我无法解决我遇到的问题(花了半天时间)。想要更简单的东西。
sharpziplib: 没有文档,也无法弄清楚如何使用它。
基本上我想告诉图书馆这样的功能:
zip.AddDIr("c:\opera")
zip.excludeDir("C:\opera\1\cache")
有这样的lib吗?还是我能做的其他事情?
由于
答案 0 :(得分:0)
您可以使用System.IO.Compression;你可以选择要压缩的文件;是否创建单个压缩文件;以及是否加密内容;
如果先加密,压缩几乎不会减小任何尺寸。
public static void Compress(FileInfo fi)
{
// Get the stream of the source file.
using (FileStream inFile = fi.OpenRead())
{
// Prevent compressing hidden and already compressed files.
if ((File.GetAttributes(fi.FullName) & FileAttributes.Hidden)
!= FileAttributes.Hidden & fi.Extension != ".cmp")
{
// Create the compressed file.
using (FileStream outFile =
File.Create(fi.FullName + ".cmp"))
{
using (DeflateStream Compress =
new DeflateStream(outFile,
CompressionMode.Compress))
{
// Copy the source file into
// the compression stream.
byte[] buffer = new byte[4096];
int numRead;
while ((numRead = inFile.Read(buffer,
0, buffer.Length)) != 0)
{
Compress.Write(buffer, 0, numRead);
}
Console.WriteLine("Compressed {0} from {1} to {2} bytes.",
fi.Name, fi.Length.ToString(), outFile.Length.ToString());
}
}
}
}
}
您还可以查看传统的ZIP文件格式压缩: http://www.codeproject.com/KB/recipes/ZipStorer.aspx
您可以在ZipStorer类中使用以下方法直接将其包含在项目中:
private static void CompressFile(string srcFileName, string zipFileName)
private static void DecompressFile(string zipFileName, string unzipFolder)