无法将类型'System.IO.Stream'隐式转换为'Java.IO.InputStream'

GAM*_*AMA 5 .net c# android xamarin.android java-io

我在SO上提到了一些类似的问题,但没有一个涉及IO.

我使用时在java中使用了相同的代码Eclipse.那个时候它奏效了.

但现在我尝试在Mono for Android(C#)中使用此代码,它不起作用.

我正在尝试运行此代码来创建InputStream:

InputStream myInput =ctx.Assets.Open(DATABASE_NAME + ".db");
Run Code Online (Sandbox Code Playgroud)

但它给了我编译时错误: Cannot implicitly convert type 'System.IO.Stream' to 'Java.IO.InputStream'

有一个直接的功能可以将文件从资源复制到设备内存,但需要源和目标路径.

我如何获得源路径???

因为我是绝对的初学者Mono for Android,任何帮助表示赞赏.

jon*_*onp 9

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);
Run Code Online (Sandbox Code Playgroud)