Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法隐式转换类型';System.IO.Stream';至';Java.IO.InputStream';_C#_Android_Xamarin.android_Java Io_.net - Fatal编程技术网

C# 无法隐式转换类型';System.IO.Stream';至';Java.IO.InputStream';

C# 无法隐式转换类型';System.IO.Stream';至';Java.IO.InputStream';,c#,android,xamarin.android,java-io,.net,C#,Android,Xamarin.android,Java Io,.net,我提到了一些类似的问题,但没有一个是关于IO 当我使用Eclipse时,我在java中使用了相同的代码。那次成功了 但是现在我尝试在Android的Mono中使用这段代码,它不起作用 我正在尝试运行此代码以创建InputStream: InputStream myInput =ctx.Assets.Open(DATABASE_NAME + ".db"); 但它给了我编译时错误:无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream” 有一个直接函数可以

我提到了一些类似的问题,但没有一个是关于
IO

当我使用Eclipse时,我在java中使用了相同的代码。那次成功了

但是现在我尝试在Android的Mono中使用这段代码,它不起作用

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

InputStream myInput =ctx.Assets.Open(DATABASE_NAME + ".db");
但它给了我编译时错误:
无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

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

如何获取源路径???


由于我是Android版Mono的绝对初学者,非常感谢您的帮助。

Android版Mono将一些Java结构转换为“等效的”.NET结构,以简化类似.NET的平台之间的代码共享。其中,
java.io.InputStream
java.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);

您正在尝试将System.IO.Stream转换为不允许的Java.IO.InputStream。。两者都是不同的环境

您想在这里实现的功能可以使用System.IO.Stream完成,因此无需转换

            System.IO.Stream input = context.Assets.Open(FILENAME);
            Java.IO.FileOutputStream output = new Java.IO.FileOutputStream(file);
            byte[] buffer = new byte[1024];
            int size;
            while ((size = input.Read(buffer, 0, buffer.Length)) > 0)
            {
                output.Write(buffer, 0, size);
            }
            input.Close();
            output.Close();

看起来您缺少java和Mono代码,您可以使用这两种代码中的一种,但不能同时使用这两种代码。但是,如何在代码行上方进行移植?您必须将所有java咖啡转换为Mono。如果你想在Android上运行程序,有什么理由需要用Mono编写吗?@Kai Monodroid允许你用C#编写Android应用程序并重用现有的.NET代码,这是使用该产品的一个原因。@Kai you'r假设有一个现有的Java代码库。Mono for Android针对的是那些没有现有Java代码库但希望重用现有C#代码库的用户。