【问题标题】:How to write a file to a Internal Storage in xamarin forms which can be found by the user如何以用户可以找到的 xamarin 形式将文件写入内部存储
【发布时间】:2020-09-04 11:13:50
【问题描述】:

我一直在努力将文件写入内部存储。我想通过为我的应用程序创建一个单独的文件夹(如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


    【解决方案1】:

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

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

    【讨论】:

    • 正是我想要的。感谢您的回答。我现在试试这个然后回来。请给我10分钟。
    • 第一次遇到权限被拒绝的问题,即使在清单中授予权限后也是如此。通过允许从我的设备解决它。然后接下来文件被保存而没有任何错误。但我在下载目录中看不到它。
    • 无论如何我都不想保存在外部存储中。我对内部存储感兴趣
    • 等几分钟,我把我的演示上传给你
    • 我在等着呢?
    【解决方案2】:

    对于正在寻找答案的人。请访问此链接 => https://stackoverflow.com/a/63777656/9048996

    这里有一个解决方案可以帮助在我们的内部存储或外部(如果可用)中创建一个单独的目录。然后,您可以在该专用目录中创建自己的文件,这些文件是公开的并且对用户可见,以便他们可以在需要时共享它们。提供的解决方案仅适用于 android。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      相关资源
      最近更新 更多