如何修复Xamarin.forms System.IO.FileNotFoundException:找不到文件

时间:2016-08-08 08:46:54

标签: c# xamarin xamarin.android xamarin.forms portable-class-library

我正在使用 xamrin.forms ,我正在尝试访问文件并阅读它。

我将lastusername.txt作为文本文件,我将其构建操作设置为"内容",实际上我正在尝试读取文件如下:

  var filename = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "lastusername.txt");
    if (filename != null)
           return System.IO.File.ReadAllText(filename);//error occurred here 
    else
           return "";

我收到以下错误:

  

System.IO.FileNotFoundException:找不到文件

1 个答案:

答案 0 :(得分:1)

将您的文件放在Android 资产文件夹中,并为其指定构建类型为“AndroidAsset”。

由于您的应用资源是只读的,您可以通过AssetManager读取它,如果它不存在(即第一次运行应用程序),则将其保存(复制)到其他地方:

var fileName = "MyAssetBasedFile.txt";
if (!File.Exists(Path.Combine(CacheDir.Path, fileName)))
{
    AssetManager assets = this.Assets;
    using (StreamReader sr = new StreamReader(assets.Open(fileName)))
    using (StreamWriter sw = new StreamWriter(Path.Combine(CacheDir.Path, fileName), append: false))
        sw.Write(sr.ReadToEnd());
}
string content;
using (StreamReader sr = new StreamReader(Path.Combine(CacheDir.Path, fileName)))
{
    content = sr.ReadToEnd();
}
Log.Debug("SO", content);

下次应用程序运行时,您将在缓存目录中选择一个。