2012-03-28 63 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); 
相关问题