簡體   English   中英

C# 創建的 ZIP 文件無效

[英]C# Created ZIP file is invalid

我正在嘗試將多個文件壓縮為一個 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();
}

請參閱 Microsoft 文檔以獲取幫助。 這實際上是谷歌上的第一個結果:

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命名空間的更多示例,請訪問我在下面提供的來源。

(來源)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM