首页 > 解决方案 > 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");
        }
        
        
    }

我不明白为什么这不应该工作。有人知道为什么不这样做吗?

标签: androidxamarinxamarin.forms

解决方案


就像 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工具。请检查链接中的方式。

登录成功时如何将用户名写入本地txt文件并检查文件以进行下次登录?


推荐阅读