【问题标题】:Android : What is Xamarin / C# equivalent of Context.MODE_PRIVATEAndroid:什么是 Xamarin / C# 等价于 Context.MODE_PRIVATE
【发布时间】:2017-04-28 15:45:55
【问题描述】:

根据这个参考 https://developer.android.com/guide/topics/data/data-storage.html#filesInternal

通过在打开文件流时使用标志 Context.MODE_PRIVATE,可以私下保存和访问文件,即其他应用或用户无权访问。

我怎样才能在 Xamarin / C# 下达到同样的效果

似乎有很多从 Environment.SpecialFolder.Personal 获取路径的示例

字符串路径 = Environment.GetFolderPath (Environment.SpecialFolder.Personal);

但我看不到任何说明此数据对应用程序私有的文档。事实上,有很多轶事帖子表明它与 SpecialFolder.MyDocuments 是同一个枚举。

谁能告诉我如何写入应用程序专用的内部存储。

非常感谢

【问题讨论】:

    标签: android xamarin xamarin.android privacy file-access


    【解决方案1】:

    谁能告诉我如何写入应用程序专用的内部存储。

    您可以使用以下 C# 代码写入内部存储:

    string FILENAME = "hello_file";
    string str = "hello world!";
    
    using (var fos = OpenFileOutput(FILENAME, FileCreationMode.Private))
    {
         //get the byte array
         byte[] bytes = Encoding.ASCII.GetBytes(str);
         fos.Write(bytes, 0, bytes.Length);
    }
    

    更新:您可以使用以下代码读取内容:

    using (var ios = OpenFileInput(FILENAME))
    {
        string strs;
        using (InputStreamReader sr = new InputStreamReader(ios))
        {
            using (BufferedReader br = new BufferedReader(sr))
            {
                StringBuilder sb = new StringBuilder();
                string line;
                while ((line = br.ReadLine()) != null)
                {
                    sb.Append(line);
                }
                strs = sb.ToString();
            }
        }
    }
    

    【讨论】:

    • 感谢您对此的回复。我的写作执行正常,但是当我使用 Context c = Android.App.Application.Context; 回读时流 fis = c.OpenFileInput(FILENAME); ,我收到错误 Java.IO.FileNotFoundException #
    • 我已更新答案以添加读取文件的代码。请检查一下。
    猜你喜欢
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多