Xamarin.forms 如何访问appdata进行写入和读取?
我正在使用Xamarin.forms制作一个跨平台的应用程序,我需要在本地目录中编写以保存数据。通过我的研究,我发现在iOS和Android中这样做的方式不同。我试过一些东西,但不起作用: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
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);
}
}
}