Xamarin Android保存文本文件

pxq42qpu  于 2023-05-21  发布在  Android
关注(0)|答案(4)|浏览(245)

我正在使用Xamarin.Android,我想将.txt文件保存到SD卡。下面是我正在使用的代码:

private void SavetoSd()
  {
       var sdCardPath = Android.OS.Environment.ExternalStorageDirectory.Path;
       var filePath = System.IO.Path.Combine(sdCardPath, "iootext.txt");
       if (!System.IO.File.Exists(filePath))
       {
           using(System.IO.StreamWriter write = new System.IO.StreamWriter(filePath,true))
           {
               write.Write(etSipServer.ToString());
           }
       }    
  }

但是,我收到以下错误:
System.UnauthorizedAccessException:拒绝访问路径“/mnt/sdcard/iootext.txt”。
我在清单中添加了以下内容:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

如何修复错误?

lpwwtiir

lpwwtiir1#

如果您使用的是Android 6.0+,则需要执行运行时权限检查。可以这样做:

if ((CheckSelfPermission(Permission.ReadExternalStorage) == (int)Permission.Granted) && 
    (CheckSelfPermission(Permission.WriteExternalStorage) == (int)Permission.Granted))

更多信息可以在android文档here中找到。

nqwrtyyt

nqwrtyyt2#

如果文件不存在,首先创建,然后获取绝对路径并将数据写入其中。

Java.IO.File sdCard = Android.OS.Environment.ExternalStorageDirectory;
     Java.IO.File dir = new Java.IO.File (sdCard.AbsolutePath + "/MyFolder");
     dir.Mkdirs ();
     Java.IO.File file = new Java.IO.File (dir,"iootext.txt");
        if (!file.Exists ()) {
            file.CreateNewFile ();
            file.Mkdir ();
            FileWriter writer = new FileWriter (file);
            // Writes the content to the file
            writer.Write (jsonData);
            writer.Flush ();
            writer.Close ();
        }
webghufk

webghufk3#

我也遇到了同样的问题,花了几个小时后,我发现如果你运行的sdk高于23,android版本高于6,你应该向用户执行访问请求。请在this链接上找到更多信息

lg40wkob

lg40wkob4#

我可能会迟到但是经过一整天的挖掘,我发现对我有效的一件事是来自this link here。我的难题中缺少的部分是在阅读和写入文件时使用Environment.SpecialFolder.LocalApplicationData
使用上面链接中的详细信息的摘要示例,为了便于使用而略有修改:

string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "notes.txt");

// read 
string fileData = File.ReadAllText(fileName);

// write
File.WriteAllText(fileName, fileData);

相关问题