c # gzip - сохранить расширение исходного файла, но удалить при сжатии - PullRequest
1 голос
/ 03 мая 2011

В основном я пытаюсь сжать файл "sample.doc" в формат файла .gz.Когда это происходит, говорят, что нужно удалить расширение файла, поэтому вместо того, чтобы выглядеть как «sample.doc.gz», оно появляется как «sample.gz».Однако, когда файл извлекается, он также теряет свое расширение .doc.например.имя файла просто "образец".Любые идеи?

с использованием системы;используя System.IO;использование System.IO.Compression;using System.Text;

пространство имен gzipexample {

class Program
{
    public static void Main()
    {
        CompressFile(@"C:\sample.doc");
   }


    //Compresses the file into a .gz file
    public static void CompressFile(string path)
    {
        string compressedPath = path;
        Console.WriteLine("Compressing: " + path);

        int extIndex = compressedPath.LastIndexOf(".");
        FileStream sourceFile = File.OpenRead(path);
        FileStream destinationFile = File.Create(compressedPath.Replace(compressedPath.Substring(extIndex), "") + ".gz");

        byte[] buffer = new byte[sourceFile.Length];

        sourceFile.Read(buffer, 0, buffer.Length);

        using (GZipStream output = new GZipStream(destinationFile,
            CompressionMode.Compress))
        {
            Console.WriteLine("Compressing {0} to {1}.", sourceFile.Name,
                destinationFile.Name, false);

            output.Write(buffer, 0, buffer.Length);
        }

        // Close the files.
        sourceFile.Close();
        destinationFile.Close();
    }
}

}

1 Ответ

1 голос
/ 03 мая 2011

Если я правильно понимаю ваш вопрос, решения, как указано, не существует.Файл gzip (по крайней мере, файл gzip, как вы делаете это) не хранит его имя, поэтому, если вы сжимаете файл с именем sample.doc, а выходные данные с именем sample.gz, ".doc "часть ушла навсегда.Вот почему, если вы сжимаете файл с помощью утилиты командной строки gzip, то это сжатая версия sample.doc.gz.

В некоторых ограниченных ситуациях вы можете угадать подходящее расширение, посмотрев на содержимое.файла, но это не очень надежно.Если вам просто нужно сжатие, а формат файла не ограничен, вы можете просто создать файл .zip, который хранит имена файлов.

...