2012-03-28 4 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

+0

Но тогда как порт ввода выше строки кода? – GAMA

+0

Вам нужно преобразовать все ваши Java-кофе в Mono. Есть ли причина, по которой вам нужно писать в Mono, если вы хотите запустить программу на Android? – Kai

ответ

8

Mono for Android переводит некоторые 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); 
Смежные вопросы