PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kennt sich jemand mit SharpZipLib aus


Elemental
2005-06-01, 17:39:43
Hallo allerseits,
ich versuche mich zum erstenmal an der SharpZipLib, aber mit bescheidenem Erfolg. Da man zu einem bestehenden Archiv keine Dateien hinzufügen kann, wollte ich einfach ein neues Archiv erzeugen und da eine neue datei, sowie alle Dateien aus dem bestehenden Archiv reinpacken:


public static bool CreateNewZipFromExistingZipAndAdditionalFile(string strNewZipFile, string strExistingZipFile, string strFileToAdd)
{
if( (File.Exists(strExistingZipFile) == false) || (File.Exists(strFileToAdd) == false) )
{
return false;
}


ZipOutputStream outputStream = new ZipOutputStream(File.Create(strNewZipFile));
outputStream.SetLevel(9); //highest compression

//add the new file-------------------------------------------------------------
FileStream fs = File.OpenRead(strFileToAdd);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);

ZipEntry entry = new ZipEntry(strFileToAdd);

outputStream.PutNextEntry(entry);

outputStream.Write(buffer, 0, buffer.Length);


//add all files of the other zip-----------------------------------------------

ZipFile existingZipFile = new ZipFile(File.OpenRead(strExistingZipFile));

foreach(ZipEntry entry2 in existingZipFile)
{
byte[] buffer2 = new byte[entry2.Size];

outputStream.PutNextEntry(entry2);
outputStream.Write(buffer2, 0, buffer2.Length);
}

//-----------------------------------------------------------------------------
outputStream.Finish();
outputStream.Close();
return true;
}


Allerdings kracht es in der foreach-Schleife, bei zweiten Durchgang mit einer Message wie z.B.
"compressed size was 237, but I expected 162453"

Die hilfe is da ja nicht so toll; ich versteh einfach nicht, wo das Problem is...

mfG
Elemental