首页 > 解决方案 > 无法将数据写入文件。所有 System.IO 方法都不起作用。Xamarin.Forms

问题描述

我正在iOS使用Xamarin.Forms. 我SQLite通过Mono.Data.Sqlite library. 我需要通过INSERT命令在数据库中插入数据并将数据写入文本文件。我已存储到 iOS 项目的 Resources 目录中的所有文件(文本文件、.db 文件、图像)。当我尝试将数据写入文本文件或INSERT数据库时,程序什么也不做。未插入/写入数据。并且没有抛出异常。例如:

public partial class SomePage : ContentPage
{
    public SomePage()
    {
        InitializeComponent();

        using (StreamWriter sw = new StreamWriter("some_file.txt"))
        {
            sw.WriteLine("some data");
        }
    }
}

数据未写入,文件仍为空。

我使用 macOS Catalina 10.15.4 和 Visual Studio for Mac 8.6.1

我已经搜索过这个问题,但没有什么可以解决这个问题。等待你的答案!谢谢!

标签: c#xamarin.formssystem.io.file

解决方案


谢谢@Jason,他向我展示了正确的方法:) 所以解决方案是将应用程序启动时附加在资源中的文件复制到可写文件夹中,例如 iOS 应用程序沙箱中的Documents文件夹。所以我们可以使用一个Environment类来访问这个文件夹。

public partial class SomePage : ContentPage
{
    public SomePage()
    {
        string filepath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "some_file.txt");
        File.Copy("some_file.txt", filepath); // From Resource folder to Documents
        File.WriteAllText(filepath, "Some text");
    }
}

推荐阅读