我想在C#中压缩一个文件和一个目录。我在互联网上找到了一些解决方案,但它们太复杂了,我无法在我的项目中运行它们。有没有人能给我一个清晰有效的解决方案?
发布于 2012-06-22 17:29:03
您可以在System.IO.Compression名称空间中使用GZipStream
.NET 2.0.
public static void CompressFile(string path)
{
FileStream sourceFile = File.OpenRead(path);
FileStream destinationFile = File.Create(path + ".gz");
byte[] buffer = new byte[sourceFile.Length];
sourceFile.Read(buffer, 0, buffer.Length);
using (GZipStream output = new GZipStream(destinationFile,
CompressionMode.Compress))
{
Console.WriteLine("Compressing {0} to {1}.", sourceFile.Name,
destinationFile.Name, false);
output.Write(buffer, 0, buffer.Length);
}
// Close the files.
sourceFile.Close();
destinationFile.Close();
}.NET 4
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 != ".gz")
{
// Create the compressed file.
using (FileStream outFile =
File.Create(fi.FullName + ".gz"))
{
using (GZipStream Compress =
new GZipStream(outFile,
CompressionMode.Compress))
{
// Copy the source file into
// the compression stream.
inFile.CopyTo(Compress);
Console.WriteLine("Compressed {0} from {1} to {2} bytes.",
fi.Name, fi.Length.ToString(), outFile.Length.ToString());
}
}
}
}
}http://msdn.microsoft.com/en-us/library/ms404280.aspx
发布于 2013-04-19 00:14:52
我添加了这个答案,因为我已经找到了一个比任何现有答案都更简单的方法:
<代码>H19压缩文件<代码>H210<代码>G211
代码:
using (ZipFile zip = new ZipFile())
{
zip.AddFile("C:\test\test.txt");
zip.AddFile("C:\test\test2.txt");
zip.Save("C:\output.zip");
}如果您不想在压缩文件中镜像原始文件夹结构,请查看AddFile()和AddFolder()等的覆盖。
发布于 2019-01-11 17:33:04
对于.Net Framework4.5,这是我找到的最清晰的例子:
using System;
using System.IO;
using System.IO.Compression;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string startPath = @"c:\example\start";
string zipPath = @"c:\example\result.zip";
string extractPath = @"c:\example\extract";
ZipFile.CreateFromDirectory(startPath, zipPath);
ZipFile.ExtractToDirectory(zipPath, extractPath);
}
}
}您需要添加一个对System.IO.Compression.FileSystem的引用
来自:https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-compress-and-extract-files
https://stackoverflow.com/questions/11153542
复制相似问题