Как сделать разные имена файлов и архивов в сжатии GZipStream?

У меня есть файл в текущем каталоге, имя которого firstName, Я хочу создать архив с этим файлом (имя файла должно остаться). Название архива должно быть archiveName, Но когда я использую свой код, я получаю архив с правильным именем, но имя файла в нем было изменено. Как я могу это исправить?

    public static void Compress(string firstName, string secondName)
    {
        FileInfo fileToCompress = new FileInfo(firstName);
        using (FileStream originalFileStream = fileToCompress.OpenRead())
        {
            if ((File.GetAttributes(fileToCompress.FullName) &
                FileAttributes.Hidden) != FileAttributes.Hidden & fileToCompress.Extension != ".gz")
            {
                using (FileStream compressedFileStream = File.Create(secondName))
                {
                    using (GZipStream compressionStream = new GZipStream(compressedFileStream,
                        CompressionMode.Compress))
                    {
                        originalFileStream.CopyTo(compressionStream);

                    }
                }
                FileInfo info = new FileInfo(secondName);
                Console.WriteLine("Compressed {0} from {1} to {2} bytes.",
                fileToCompress.Name, fileToCompress.Length.ToString(), info.Length.ToString());
            }
        }
    }

1 ответ

GZipStream не ZIP-файл; это прямое сжатие потока.
Он не имеет представления о файлах или именах; он просто сжимает байты.

Вы ищете ZipArchive учебный класс.

Другие вопросы по тегам