Xamarin Android System.IO.FileNotFoundException:找不到文件异常

时间:2016-07-19 09:56:48

标签: c# android json xamarin xamarin.android

我使用Visual Studio 2015和Xamarin Android。

我想从文件中读取一些JSON数据,但我一直得到这个System.IO.FileNotFoundException,即使我已经设置了我的文件属性"构建:内容,复制到输出目录:复制如果更新&#34 ;我可以在我的构建文件夹中看到该文件。

我使用此代码:

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

确切的例外是:

  

System.IO.FileNotFoundException:找不到文件" /AedJson.json"。

Error Picture

3 个答案:

答案 0 :(得分:2)

您需要将json文件作为资产(在Xamarin.Android文件夹中)添加到Assets项目中并将其标记为AndroidAsset构建类型,然后您可以使用{ {1}}阅读它。

AssetManager

参考:Using Android Assets

答案 1 :(得分:0)

我不确定它确实是一个错误,但是看错误,似乎路径不正确。您真的需要将文件精确保存到实际保存的位置吗?如果没有,试试这个:

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);
}

使用此路径进行保存和加载。对于我的所有文件,我都是这样做的,似乎运行良好。

答案 2 :(得分:0)

这可以使用Microsoft.Extensions.Configuration.Json

在属性中将json文件构建操作设置为嵌入式资源

项目:客户端

FileFolder :配置

文件名:appsettings.json

JSON:

build.extractCSS: true

代码:

{
  "Rest": {
    "Server": "192.168.0.199",
    "Port": "5003"
  }
}