android - Xamarin Forms Android - 保存到文件
问题描述
使用 Xamarin.Forms,自 Android 8.0 以来写入文件的方式是否发生了变化?
我更新了我的一个现有项目,其中包括一个非常简单的功能,可以将文本文件写入本地存储,但在运行应用程序并测试写入文件部分后,它只是冻结并崩溃。控制台中没有错误,甚至没有证据表明它在做任何事情。
我的功能是这样的:
public void Submit_Clicked(object sender, EventArgs e)
{
{
string text = NameEntry.Text;
string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
string filename = Path.Combine(path, "DeviceProfile.txt");
File.WriteAllText(filename, text);
}
catch(Exception ex)
{
DisplayAlert("Error:", ex.Message.ToString(), "Ok");
}
}
我不明白为什么这不应该工作。有人知道为什么不这样做吗?
解决方案
就像 Jason 所说,下面的代码和您提供的代码都可以将文本文件写入本地存储。
string text = NameEntry.Text;
var path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "DeviceProfile.txt");
using (var writer = File.CreateText(backingFile))
{
await writer.WriteLineAsync(text);
}
您可以从文件中读取文本进行检查。
public async Task<string> ReadCountAsync()
{
var backingFile = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "DeviceProfile.txt");
if (backingFile == null || !File.Exists(backingFile))
{
return null;
}
var text = string.Empty;
using (var reader = new StreamReader(backingFile, true))
{
var str = await reader.ReadToEndAsync();
text = str;
}
return text;
}
Environment.SpecialFolder.Personal
您用于保存文件的路径是内部存储。
在内部存储中,没有 root 权限是看不到文件的。如果你想查看它,你可以使用adb
工具。请检查链接中的方式。
推荐阅读
- c++ - 苹果事业部 CSES Qustion 解决方案
- python - Leetcode 不同结果编译(#231 2 的幂)
- google-apps-script - 从电子表格中获取后将粗体文本粘贴到文档中
- javascript - 在 MutationObserver 中获取父级的问题
- angular - 我是否需要取消订阅已使用 Observable.from() 转换为 Observable 的 Promise?
- ruby-on-rails - 为什么rails作业(ApplicationJob)使用splat运算符?
- html - 无法在悬停时替换图像
- cygwin - 在 Windows 10 上安装图形工具时找不到 expat 库
- firebase - 如何查看超过 1 个月的 Firebase 云功能日志
- apache-spark - 如何仅在 Apache Spark SQL 中的某些列上按汇总分组?