2012-03-28 47 views
5

Me he referido algunas preguntas similares en SO, pero ninguna de ellas trata con IO.No se puede convertir implícitamente el tipo 'System.IO.Stream' en 'Java.IO.InputStream'

He usado el mismo código en Java cuando utilicé Eclipse. Esa vez funcionó.

Pero ahora trato de usar este código en Mono for Android (C#), no funciona.

Estoy tratando de ejecutar este código para crear una InputStream:

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

Pero es que me da tiempo de compilación de error: Cannot implicitly convert type 'System.IO.Stream' to 'Java.IO.InputStream'

Hay una función directa a copiar un archivo de activos a la memoria del dispositivo, pero eso requiere una ruta de origen y de destino.

¿Cómo obtengo la fuente Path ???

Como soy absoluto principiante a Mono for Android, cualquier ayuda apreciada.

+0

Parece que se echa en falta Java y código de Mono, puede utilizar uno de los dos, pero no las dos juntas – Kai

+0

Pero entonces, ¿cómo hacer que el puerto por encima de la línea de código? – GAMA

+0

Tienes que convertir todo tu café Java a Mono. ¿Hay alguna razón por la que quieras escribir en Mono si quieres ejecutar el programa en Android? – Kai

Respuesta

8

Mono para Android traduce algunas construcciones de Java en construcciones .NET "equivalentes" para facilitar el intercambio de código entre plataformas similares a .NET. Como parte de esto, java.io.InputStream y java.io.OutputStream se asignan a System.IO.Stream, de ahí los errores del compilador.

¿Hay algo que necesite que exista en InputStream que no existe en System.IO.Stream?

Existe una función directa para copiar un archivo de los activos a la memoria del dispositivo, pero eso requiere una ruta de origen y de destino.

No tengo idea de qué método de InputStream te refieres aquí. Puede utilizar Stream.CopyTo(Stream) de hacer eso:

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); 
Cuestiones relacionadas