Нужна помощь в конвертации Zip с использованием Gstream
Я использую этот код для сжатия файла в 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
поэтому его расширение изменилось. Я хочу изменить код таким образом, чтобы имя почтового индекса было таким же, как сейчас. но внутри этого моего файла должен быть только myfile.pdf
пожалуйста, помогите мне решить это. заранее спасибо
1 ответ
Вы должны изменить формат файла так, чтобы:
- Расширение
gz
- Часть перед расширением подходит для вашего файла, так что когда
.gz
был удален, это будет разумное имя файла.
Так что вместо преобразования myfile.pdf
в myfile.pdf_31_7_2013.zip
Я бы преобразовал это в myfile-20130731.pdf.gz
, Когда это извлечение, оно станет myfile-20130731.pdf
, Обратите внимание, что с помощью yyyyMMdd
чище чем MM_d_yyyy
как это сортируемо и однозначно.