1

我正在使用 mono 和 monobjc 开发一个在 Mac OS X 10.6 上运行的应用程序。我正在使用 ICSharpCode.SharpZip 将一些文件添加到 zip 文件中。代码如下 -

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:在 ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToArray (System.String str) [0x00000] 在 ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToArray (System.String str) [0x00000] 在 ICSharpCode 的 System.Text.Encoding.GetEncoding (Int32 代码页) [0x00000] 中不支持 CodePage 437 .SharpZipLib.Zip.ZipConstants.ConvertToArray (Int32 flags, System.String str) [0x00000] in :0 at ICSharpCode.SharpZipLib.Zip.ZipOutputStream.PutNextEntry (ICSharpCode.SharpZipLib.Zip.ZipEntry entry) [0x00000] in :0 at (包装远程调用与检查)ICSharpCode.SharpZipLib.Zip.ZipOutputStream:PutNextEntry (ICSharpCode.SharpZipLib.Zip.ZipEntry)

我有以下两个问题-

  1. 是什么导致上述异常。
  2. 看起来 ICSharp 可能不是最佳选择。有什么更好的选择?
4

1 回答 1

0

我通过创建 tar.gzip 而不是使用 zip 解决了这个问题。我使用 ICSharp 本身来创建 tar 文件。Mac 似乎不喜欢 zip。也可能是因为我在 Mac 端使用了 Mono 框架中的 ICSharp,而在 Windows 端使用了 ICSharp(从网上下载)。但是使用 tar.gzip 解决了这个问题。

于 2011-05-31T16:37:16.623 回答