首页 > 解决方案 > 如何以用户可以找到的 xamarin 形式将文件写入内部存储

问题描述

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

我怎么做?我已经尝试过 Xamarin.Essentials 中的 FileSystem Helpers 并且还使用了 Environment.SpecialFolder 但似乎没有任何效果。我只是想保存一个简单的文本文件。

我试过的链接..

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

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

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

标签: xamarin.forms

解决方案


是否要将数据存储在这些文件夹中?

在此处输入图像描述

如果是这样,对于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。

在此处输入图像描述


推荐阅读