2011-05-20 61 views
1

我使用mono和monobjc開發應用程序以在Mac OS X 10.6上運行。我使用ICSharpCode.SharpZip將一些文件添加到一個zip文件中。其代碼 -使用ICSharp在Mac上的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:代碼頁437在System.Text.Encoding.GetEncoding(的Int32代碼頁)不支持 [0x00000] in:0 at ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToArray(System.String str)[0x00000] in:0 at ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToArray(Int32 flags,System.String str)[ 0x00000] in:0 at ICSharpCode.SharpZipLib.Zip.ZipOutputStream.PutNextEntry(ICSharpCode.SharpZipLib.Zip.ZipEntry entr Y)[0x00000]在:0 在(包裝遠程-調用與 - 檢查)ICSharpCode.SharpZipLib.Zip.ZipOutputStream:PutNextEntry(ICSharpCode.SharpZipLib.Zip.ZipEntry)

我有以下兩個問題 -

  1. 什麼是造成上述例外。
  2. 它看起來像ICSharp可能不是最好的選擇。有什麼更好的選擇?
+0

您是否試圖從控制檯應用程序隔離並運行相同的代碼?錯誤是否出現? – 2011-05-20 08:27:09

+0

@Laurent - 我試了兩次,它工作正常。也正如我所說,這並不總是發生,有時會發生。 – Prashant 2011-05-20 15:19:40

回答

0

我通過創建tar.gzip而不是使用zip來解決這個問題。我使用ICSharp本身來創建tar文件。 Mac似乎不喜歡zip。這也可能是因爲我在Mac側的Mono框架中使用ICSharp,而在Windows側使用ICSharp(從網上下載)。但使用tar.gzip解決了這個問題。