Xamarin Android System.IO.FileNotFoundException: не удалось найти исключение для файла

c# android json xamarin xamarin.android

2086 просмотра

2 ответа

3 Репутация автора

Я использую Visual Studio 2015 с Xamarin Android.

Я хочу прочитать некоторые данные JSON из файла, но я продолжаю получать это System.IO.FileNotFoundException, хотя я установил свои свойства файлов «Сборка: содержимое, Копировать в выходной каталог: Копировать, если новее», и я физически вижу файл в папке сборки.

Я использую этот код:

var path = @"AedJson.json";
using (var streamReader = new StreamReader(path))
{
     string json = streamReader.ReadToEnd();
     //JObject o1 = JObject.Parse(json);
}

Точное исключение:

System.IO.FileNotFoundException: не удалось найти файл "/AedJson.json".

Ошибка изображения

Автор: MatkoMS Источник Размещён: 19.07.2016 09:56

Ответы (2)


2 плюса

59248 Репутация автора

Решение

Вам нужно добавить свой json-файл в свой Xamarin.Androidпроект как актив (внутри Assetsпапки) и пометить его как AndroidAssetтип сборки, после чего вы можете использовать его AssetManagerдля чтения.

AssetManager assets = this.Assets;
using (StreamReader sr = new StreamReader (assets.Open ("AedJson.json")))
{
    string json = sr.ReadToEnd ();
}

Ссылка: Использование ресурсов Android

Автор: SushiHangover Размещён: 19.07.2016 10:06

0 плюса

731 Репутация автора

Я не уверен, что это действительно ошибка, но, глядя на ошибку, кажется, что путь неверен. Вам действительно нужно сохранить файл именно там, где вы его сохраняете? Если нет, попробуйте это:

string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
string filename = Path.Combine(path, "myfile.txt");
using (var streamReader = new StreamReader(filename))
{
    string json = streamReader.ReadToEnd();
    //JObject o1 = JObject.Parse(json);
}

Используйте этот путь для сохранения и загрузки. Я продолжаю в том же духе для всех своих файлов, и, кажется, это работает хорошо.

Автор: YumeYume Размещён: 19.07.2016 10:25
Вопросы из категории :
32x32