c# - 无法将数据写入文件。所有 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
我已经搜索过这个问题,但没有什么可以解决这个问题。等待你的答案!谢谢!
解决方案
谢谢@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");
}
}
推荐阅读
- android - 后台服务上的应用程序监控位置
- javascript - 收到错误:未捕获(承诺)服务器响应无效?
- android - ConstraintLayout 中的 MPAndroid 图表以及其他小部件(它们不可见)
- pandas - 从 Pandas 中的 DataFrame 中提取某些行的最短方法
- angular - 在 ag-grid serverSide rowModelType 上实现过滤器
- json - Firestore 选项,因为它不支持命名空间
- r - 使用 paste() 以编程方式指定数据框并替换索引处的值
- python - Python - 在同一数组的另一个维度中复制数组的维度(从 2D 数组到 3D 数组)
- python - 使用 Python 将 base64 编码的谷歌服务帐户密钥转换为 JSON 文件
- django - 无法加载静态文件 Django 1.9