如何以 xamarin 形式将文件写入用户可以找到的内部存储

Tha*_*eem 4 xamarin.forms

我一直在努力将文件写入内部存储。我想将文件保存到用户可以看到它并读取文件(例如 Mydocuments)的位置,或者通过为我的应用程序创建一个单独的文件夹(如 Whatsapp 那样)将文件保存到内部存储中。我也想在 iOS 中实现同样的场景。

我怎么做?我已经尝试过 Xamarin.Essentials 中的文件系统助手,也使用了 Environment.SpecialFolder 但似乎没有任何效果。我只是想保存一个简单的文本文件。

我试过的链接..

https://learn.microsoft.com/en-us/xamarin/android/platform/files/

https://learn.microsoft.com/en-us/xamarin/essentials/file-system-helpers?context=xamarin%2Fandroid&tabs=android

注意:我对外部存储不感兴趣。

Leo*_*SFT 5

您想将数据存储在这些文件夹中吗?

在此输入图像描述

如果是这样,对于android,我做了一个dependencyService来实现它。

例如,我想将.txt文件写入Download文件夹。我在 PCL 中创建接口。

   public interface IWirteService
    {
      void  wirteFile(string FileName);
    }
Run Code Online (Sandbox Code Playgroud)

在pcl按钮点击事件中执行。

  private void Button_Clicked(object sender, EventArgs e)
        {
            DependencyService.Get<IWirteService>().wirteFile("myfile.txt");
        }
Run Code Online (Sandbox Code Playgroud)

然后在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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不要忘记添加以下权限并获得运行时权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

这是正在运行的 GIF。

在此输入图像描述