Zip-файл на Mac, используя ITharp - PullRequest
1 голос
/ 20 мая 2011

Я использую mono и monobjc для разработки приложения для Mac OS X 10.6. Я добавляю некоторые файлы в zip-файл, используя ICSharpCode.SharpZip. Код как -

var ms = new MemoryStream();
var zipStream = new ZipOutputStream(ms); 
zipStream.PutNextEntry(new ZipEntry(Path.GetFileName(file))
         {DateTime = File.GetCreationTime(file), 
          Size = new FileInfo(file).Length});

Иногда, не всегда, код PutNewEntry выдает следующее исключение -

System.NotSupportedException: CodePage 437 не поддерживается в System.Text.Encoding.GetEncoding (кодовая страница Int32) [0x00000] в: 0 в ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToArray (System.String str) [0x00000] в: 0 в ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToArray (флаги Int32, строка System.String) [0x00000] в: 0 в ICSharpCode.SharpZipLib.Zip.ZipOutputStream.PutNextEntry (ICSharpCode.SharpZipLib.Zip.ZipEntry entry) [0x00000] в: 0 at (обертка удаленного взаимодействия с проверкой) ICSharpCode.SharpZipLib.Zip.ZipOutputStream: PutNextEntry (ICSharpCode.SharpZipLib.Zip.ZipEntry)

У меня есть следующие два вопроса -

  1. В чем причина вышеуказанного исключения.
  2. Похоже, ICSharp может быть не лучшим вариантом. Каковы лучшие альтернативы?

1 Ответ

0 голосов
/ 31 мая 2011

Я исправил это, создав tar.gzip вместо zip. Я использовал сам ICSharp для создания файла tar. Mac, похоже, не любит почтовый индекс. Это также может быть связано с тем, что я использовал ICSharp в Mono Framework на стороне Mac и ICSharp (загрузка из Интернета) на стороне Windows. Но использование tar.gzip решило эту проблему.

...