Моя цель - сжать файл с помощью gzip и затем записать сжатые байты в секцию Xml, что означает, что мне нужен сжатый байтовый массив в моем коде. Все примеры для GZip, которые я нашел, просто записывали байты прямо в файл.
Так вот мой код:
public ContainerFile(string[] inputFiles, string Output)
{
XmlDocument doc = new XmlDocument();
XmlNode root;
FileInfo fi;
FileStream fstream;
BinaryReader reader;
GZipStream gstream;
root = doc.CreateElement("compressedFile");
doc.AppendChild(root);
foreach (string f in inputFiles)
{
fstream = File.OpenRead(f);
MemoryStream s = new MemoryStream();
byte[] buffer = new byte[fstream.Length];
// Read the file to ensure it is readable.
int count = fstream.Read(buffer, 0, buffer.Length);
if (count != buffer.Length)
{
fstream.Close();
//Console.WriteLine("Test Failed: Unable to read data fromfile");
return;
}
fstream.Close();
gstream = new GZipStream(s, CompressionMode.Compress, true);
gstream.Write(buffer, 0, buffer.Length);
gstream.Flush();
byte[] bytes = new byte[s.Length];
s.Read(bytes, 0, bytes.Length);
File.WriteAllBytes(@"c:\compressed.gz", bytes);
}
по причинам отладки, я просто попытался записать данные в файл после загрузки.
Итак, длина входного файла составляет ~ 4 Кбайт. Как показывает мне дегуббер, длина массива "bytes" составляет ~ 2k. Таким образом, похоже, что размер сжатого байтового массива правильный, но все значения в нем равны 0.
Может кто-нибудь помогите мне?