xamarin.forms - 如何以用户可以找到的 xamarin 形式将文件写入内部存储
问题描述
我一直在努力将文件写入内部存储。我想通过为我的应用程序创建一个单独的文件夹(如whatsapp)将文件保存到用户可以看到它并读取文件(例如Mydocuments)或在内部存储中的位置。我也想要 iOS 中的相同场景。
我怎么做?我已经尝试过 Xamarin.Essentials 中的 FileSystem Helpers 并且还使用了 Environment.SpecialFolder 但似乎没有任何效果。我只是想保存一个简单的文本文件。
我试过的链接..
https://docs.microsoft.com/en-us/xamarin/android/platform/files/
注意:我对外部存储不感兴趣。
解决方案
是否要将数据存储在这些文件夹中?
如果是这样,对于android,我做了一个dependenceService来实现它。
例如,我想将文件写入.txt
文件Download
夹。我在 PCL 中创建接口。
public interface IWirteService
{
void wirteFile(string FileName);
}
在 pcl 按钮单击事件中执行它。
private void Button_Clicked(object sender, EventArgs e)
{
DependencyService.Get<IWirteService>().wirteFile("myfile.txt");
}
然后在android平台上实现了。
[assembly: Xamarin.Forms.Dependency(typeof(WirteFileService))]
namespace XamarinFirebase.Droid
{
public class WirteFileService:IWirteService
{
void IWirteService.wirteFile(string FileName)
{
string text = "GFG is a CS portal.";
byte[] data = Encoding.ASCII.GetBytes(text);
string DownloadsPath = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, Android.OS.Environment.DirectoryDownloads);
string filePath = Path.Combine(DownloadsPath, FileName);
File.WriteAllBytes(filePath, data);
}
}
}
不要忘记添加以下权限并获得运行时权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
这里正在运行 GIF。
推荐阅读
- node.js - Express 中未使用 bcryptjs 定义的变量
- c# - 一个更长的调用导致所有并行循环暂停或阻塞
- android - DJI 应用程序错误(没有找到 dex 位置的原始 dex 文件)
- java - Mysql 到 Cassandra java 空指针异常
- python - 高斯噪声没有覆盖主图像-Python
- excel - 当消息框显示在顶部时,如何让用户在 Excel 工作表上工作?
- graphql - 如果定义了片段,如何测试 GraphQL 查询?
- kubernetes - 通过代理 ssh 到另一个虚拟机时如何访问 kubernetes 集群中的服务?
- visual-studio-2017 - 如何在项目属性中启用包控件
- mysql - 分组连接不同的行