Арг, сегодня день глупых проблем, и я являюсь идиотом.
У меня есть приложение, которое создает zip файл, содержащий некоторые JPEG файлы из определенного каталога. Я использую этот код, чтобы:
- прочитать все файлы из каталога
- добавьте каждый из них в ZIP файл
using (var outStream = new FileStream("Out2.zip", FileMode.Create))
{
using (var zipStream = new ZipOutputStream(outStream))
{
foreach (string pathname in pathnames)
{
byte[] buffer = File.ReadAllBytes(pathname);
ZipEntry entry = new ZipEntry(Path.GetFileName(pathname));
entry.DateTime = now;
zipStream.PutNextEntry(entry);
zipStream.Write(buffer, 0, buffer.Length);
}
}
}
Все работает хорошо под Windows, когда я открываю файл e. г. с WinRAR файлы извлекаются. Но как только я пытаюсь разархивировать свой архив на Mac OS X, он создает только файл .cpgz
. Довольно бесполезно.
Обычный файл .zip
, созданный вручную с теми же файлами в Windows, без проблем распаковывается в Windows и Mac OS X.
Я нашел вышеуказанный код в Интернете, поэтому я не совсем уверен, что все это правильно. Интересно, нужно ли использовать zipStream.Write()
для прямой записи в поток?