Zip压缩

时间:2012-04-27 18:45:56

标签: c# compression zip

我有:

public static void compress(string fileName)
    {
        using (FileStream inFile = File.OpenRead(Directory.GetCurrentDirectory() + "\\" + subFolder + "\\" + fileName))
        {
            string newFileName = fileName.Remove(fileName.Length - 3) + "zip";
            using (FileStream outFile = File.Create(Directory.GetCurrentDirectory() + "\\" + subFolder + "\\" + newFileName))
            {
                using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
                {
                    inFile.CopyTo(Compress);
                }
            }
        }
    }

文件名例如是data.txt。压缩工作正常,但当我查看压缩文件时,有一个名为“data”的文件。 “txt”扩展名在哪里。文件名仍应具有名称“data.txt”。

我错过了什么或做错了什么?

此致 kazik

2 个答案:

答案 0 :(得分:0)

您可能需要使用Path.GetFileNameWithoutExtension,然后附加gz扩展名。

答案 1 :(得分:0)

使用GZipStream压缩数据时,您将为其提供字节流,而不是文件 - GZipStream实例不知道流是否来自来自网络,内存或文件,因此无法将文件名嵌入到存档中。

但是,所有文件的内容都会在存档中正确保留。您可以使用7zip将它们提取到一个新文件中(默认情况下,给定一个令牌名称,例如data),重命名您的文件,并且您将拥有与您开始时相同的文件。