【问题标题】:need help in zip conversion using Gstream在使用 Gstream 进行 zip 转换时需要帮助
【发布时间】:2013-07-31 14:08:08
【问题描述】:

我正在使用此代码将文件压缩为 zip

     public static void Compress(FileInfo fileToCompress)
    {
        using (FileStream originalFileStream = fileToCompress.OpenRead())
        {
            if ((File.GetAttributes(fileToCompress.FullName) & FileAttributes.Hidden) != FileAttributes.Hidden & fileToCompress.Extension != ".zip")
            {
                using (FileStream compressedFileStream = File.Create(fileToCompress.FullName + "_" + DateTime.Now.ToString("dd_MM_yyyy") + ".zip"))
                {

                    using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionMode.Compress))
                    {
                        originalFileStream.CopyTo(compressedFileStream);
                        Console.WriteLine("Compressed {0} from {1} to {2} bytes.",
                            fileToCompress.Name, fileToCompress.Length.ToString(), compressedFileStream.Length.ToString());
                    }
                }
            }
        }
    }

使用此代码,我将文件转换为 zip 例如我有一个名为 myfile.pdf 的文件 它的作用是用 myfile.pdf_31_7_2013.zip 保存这个文件 但问题是当我提取这个 zip 时它包含我的扩展名文件 myfile.pdf_31_7_2013 这将是无效文件,因为它的扩展名从 .pdf 更改为 .pdf_31_7_2013

所以它的扩展被改变了。我想以 zip 名称应该相同的方式修改代码 就像它现在的表现一样。但在里面我的文件应该只有 myfile.pdf

请帮我解决这个问题。在此先感谢

【问题讨论】:

  • 第一个问题:GZipStream 不是 zip 文件,因此不应称为 zip 文件。至于其余的 - 这是你的命名方案......你应该将它调整为你想要的任何东西。例如,您可以将日期放在之前而不是之后...
  • @Jon:回答这个问题... mer 正在创建一个 gzip 文件,并且 - 默认情况下 - gzip 提取会自动删除扩展名(正确为“.gz”),留下所描述的文件名。跨度>

标签: c# gzip gzipstream


【解决方案1】:

您应该更改文件格式,以便:

  • 分机号是gz
  • 扩展名之前的部分适合您的文件,因此当.gz 被删除时,它将是一个合理的文件名。

因此,我不会将myfile.pdf 转换为myfile.pdf_31_7_2013.zip,而是将其转换为myfile-20130731.pdf.gz。提取时,它将变为myfile-20130731.pdf。请注意,使用 yyyyMMdd 比使用 MM_d_yyyy 更干净,因为它是可排序且明确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    相关资源
    最近更新 更多