Xamarin.forms 如何访问appdata进行写入和读取?

Xamarin.forms 如何访问appdata进行写入和读取?,xamarin.forms,Xamarin.forms,我正在使用Xamarin.forms制作一个跨平台的应用程序,我需要在本地目录中编写以保存数据。通过我的研究,我发现在iOS和Android中这样做的方式不同。我试过一些东西,但不起作用: public string ReadData() { string filePath = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.Personal), "Data.t

我正在使用Xamarin.forms制作一个跨平台的应用程序,我需要在本地目录中编写以保存数据。通过我的研究,我发现在iOS和Android中这样做的方式不同。我试过一些东西,但不起作用:

public string ReadData()
    {
        string filePath = Path.Combine(
       Environment.GetFolderPath(Environment.SpecialFolder.Personal),
       "Data.txt");
        var data = System.IO.File.ReadAllText(filePath);
        return data;
    }

    public void WriteData(string data)
    {
        string filepath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),"Data.txt");
        System.IO.File.WriteAllText(filePath, data);
    }
我得到这个错误:

`System.Environment' does not contain a definition for `GetFolderPath'
以及:


提前感谢您的帮助。

您可能需要在

您必须通过使用特定于平台的实现(假设您对共享代码使用PCL)

摘自文档页面:在共享PCL代码中,以
接口的形式创建一个抽象,例如,如果您想写入和加载文本文件:

public interface ISaveAndLoad {
    void SaveText (string filename, string text);
    string LoadText (string filename);
}
现在,对于Android和iOS,文档指定您可以创建相同的实现(这意味着您可以直接从共享代码中创建它。您应该对此进行实验)

注意:您仍然需要为每个平台创建一个实现,这也允许您调整每个平台的实现

[assembly: Dependency (typeof (SaveAndLoad))]
namespace WorkingWithFiles {
    public class SaveAndLoad : ISaveAndLoad {
        public void SaveText (string filename, string text) {
            var documentsPath = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
            var filePath = Path.Combine (documentsPath, filename);
            System.IO.File.WriteAllText (filePath, text);
        }
        public string LoadText (string filename) {
            var documentsPath = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
            var filePath = Path.Combine (documentsPath, filename);
            return System.IO.File.ReadAllText (filePath);
        }
    }
}
[assembly: Dependency (typeof (SaveAndLoad))]
namespace WorkingWithFiles {
    public class SaveAndLoad : ISaveAndLoad {
        public void SaveText (string filename, string text) {
            var documentsPath = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
            var filePath = Path.Combine (documentsPath, filename);
            System.IO.File.WriteAllText (filePath, text);
        }
        public string LoadText (string filename) {
            var documentsPath = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
            var filePath = Path.Combine (documentsPath, filename);
            return System.IO.File.ReadAllText (filePath);
        }
    }
}