无法将数据写入文件。所有 System.IO 方法均无效。 Xamarin.Forms
Can't write data to a file. All System.IO methods doesn't work. Xamarin.Forms
我正在使用 Xamarin.Forms
制作一个简单的 iOS
应用程序。我使用 SQLite
到 Mono.Data.Sqlite library
。我需要通过 INSERT
命令将数据插入数据库并将数据写入文本文件。我已存储到 iOS 项目的 Resources 目录中的所有文件(文本文件、.db 文件、图像)。
当我尝试将数据写入文本文件或 INSERT
写入我的数据库时,程序什么都不做。数据不是 inserted/written。并且没有抛出异常。例如:
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 Mac 8.6.1
我已经搜索过这个问题,但没有什么可以解决这个问题。等待你的答案!谢谢!
谢谢@Jason,他向我展示了正确的方法:)所以解决方案是在应用程序启动时将 Resources 中附加的文件复制到 writeable 文件夹,例如 iOS 应用程序沙箱中的 Documents 文件夹。所以我们可以使用 Environment class 来访问这个文件夹。
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");
}
}
我正在使用 Xamarin.Forms
制作一个简单的 iOS
应用程序。我使用 SQLite
到 Mono.Data.Sqlite library
。我需要通过 INSERT
命令将数据插入数据库并将数据写入文本文件。我已存储到 iOS 项目的 Resources 目录中的所有文件(文本文件、.db 文件、图像)。
当我尝试将数据写入文本文件或 INSERT
写入我的数据库时,程序什么都不做。数据不是 inserted/written。并且没有抛出异常。例如:
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 Mac 8.6.1
我已经搜索过这个问题,但没有什么可以解决这个问题。等待你的答案!谢谢!
谢谢@Jason,他向我展示了正确的方法:)所以解决方案是在应用程序启动时将 Resources 中附加的文件复制到 writeable 文件夹,例如 iOS 应用程序沙箱中的 Documents 文件夹。所以我们可以使用 Environment class 来访问这个文件夹。
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");
}
}