0

我有:

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”。

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

问候卡兹克

4

2 回答 2

0

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

但是,所有文件的内容都正确保存在存档中。您可以使用 7zip 将它们解压缩到一个新文件中(默认情况下,给定一个标记名称,例如data),重新命名您的文件,您将拥有与您开始使用的文件相同的文件。

于 2012-04-27T21:12:52.180 回答
0

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

于 2012-04-27T18:49:51.763 回答