Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
static void CompressFile(string inFilename,
string outFilename)
{
FileStream sourceFile = File.OpenRead(inFilename);
FileStream destFile = File.Create(outFilename);
// Create the Compressed stream
GZipStream compStream =
new GZipStream(destFile, CompressionMode.Compress);
// Write the data
int theByte = sourceFile.ReadByte();
while (theByte != -1)
{
compStream.WriteByte((byte)theByte);
theByte = sourceFile.ReadByte();
}
// Clean it up
sourceFile.Close();
compStream.Close();
destFile.Close();
}
Пример из книги "Microsoft .NET Framework 2.0 Application Development Foundation", официального пособия для подготовки к экзамену 70-536.
Угадайте, почему "сжатые" файлы получаются больше несжатых.
в том то и дело что нет, к примеру такой вариант уже будет реально сжимать (вариант кода чтобы явно убедиться что проблема именно в том, что пишется по одному байту) :
static void CompressFile(string inFilename,
string outFilename)
{
FileStream sourceFile = File.OpenRead(inFilename);
FileStream destFile = File.Create(outFilename);
// Create the Compressed stream
GZipStream gzStream =
new GZipStream(destFile, CompressionMode.Compress);
BufferedStream compStream = new BufferedStream(gzStream);
// Write the data
int theByte = sourceFile.ReadByte();
while (theByte != -1)
{
compStream.WriteByte((byte)theByte);
theByte = sourceFile.ReadByte();
}
compStream.Flush();
// Clean it up
sourceFile.Close();
gzStream.Close();
destFile.Close();
compStream.Close();
}
Комментарии (12) RSS