2012-03-28 58 views
5

我在SO上提到了一些類似的問題,但沒有一個涉及IO不能將類型'System.IO.Stream'隱式轉換爲'Java.IO.InputStream'

我在java中使用相同的代碼時,我使用Eclipse。那次它工作。

但是現在我嘗試在Mono for Android(C#)中使用此代碼,它不起作用。

我試圖運行該代碼來創建一個InputStream

InputStream myInput =ctx.Assets.Open(DATABASE_NAME + ".db"); 

但它給我編譯時錯誤:Cannot implicitly convert type 'System.IO.Stream' to 'Java.IO.InputStream'

有一個直接的功能來複制從資產文件到設備內存,但需要源和目標路徑。

如何獲取源路徑?

因爲我是絕對初學者到Mono for Android,任何幫助表示讚賞。

+0

看起來你缺少的Java和Mono的代碼,你可以使用兩者之一,但不能兩者一起 – Kai 2012-03-28 12:39:53

+0

但後來我怎麼口上面的代碼行? – GAMA 2012-03-28 12:51:27

+0

您必須將所有Java咖啡轉換爲Mono。如果您想在Android上運行該程序,是否有任何理由希望在Mono中編寫代碼? – Kai 2012-03-28 13:20:53

回答

8

Mono for Android將一些Java結構轉換爲「等效」.NET結構,以簡化.NET類平臺之間的代碼共享。作爲其中的一部分,java.io.InputStreamjava.io.OutputStream映射到System.IO.Stream,因此編譯器錯誤。

InputStream上有什麼不存在的要求嗎System.IO.Stream

有一個直接的功能可以將文件從資產複製到設備內存,但需要源路徑和目標路徑。

我不知道你在這裏指的是什麼InputStream方法。您可以使用Stream.CopyTo(Stream)做到這一點:

Stream asset = context.Assets.Open(DATABASE_NAME + ".db"); 
string dbPath = System.IO.Path.Combine(
     System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), 
     "YourFile.xml"); 
using (var dest = System.IO.File.OpenWrite(destPath)) 
    asset.CopyTo(dest); 
相關問題