我正在尝试将多个文件压缩为一个zip文件,但是生成的zip文件无效,我的代码在这里,我没什么问题。
public static void DownloadRQFFiles(string[] sourceFileList, string saveFullPath)
{
MemoryStream ms = new MemoryStream();
foreach (string filePath in sourceFileList)
{
Console.WriteLine(filePath);
if (File.Exists(filePath))
{
string fileName = Path.GetFileName(filePath);
byte[] fileNameBytes = System.Text.Encoding.UTF8.GetBytes(fileName);
byte[] sizeBytes = BitConverter.GetBytes(fileNameBytes.Length);
ms.Write(sizeBytes, 0, sizeBytes.Length);
ms.Write(fileNameBytes, 0, fileNameBytes.Length);
byte[] fileContentBytes = System.IO.File.ReadAllBytes(filePath);
ms.Write(BitConverter.GetBytes(fileContentBytes.Length), 0, 4);
ms.Write(fileContentBytes, 0, fileContentBytes.Length);
}
}
ms.Flush();
ms.Position = 0;
using (FileStream zipFileStream = File.Create(saveFullPath))
{
using (GZipStream zipStream = new GZipStream(zipFileStream, CompressionMode.Compress))
{
ms.Position = 0;
ms.CopyTo(zipStream);
}
}
ms.Close();
}
答案 0 :(得分:2)
请参阅Microsoft文档以获取帮助。从字面上看,这是在Google上的第一个结果:
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);
}
}
}
其中startPath
是包含要压缩在一起的文件的目录,zipPath
是要创建zip文件的位置,extractPath
是应提取这些文件的位置(该示例同时显示了压缩和提取。
有关如何利用System.IO.Compression
命名空间的更多示例,请访问下面提供的资源。