Как сделать разные имена файлов и архивов в сжатии 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
учебный класс.