Xamarin android save text file

16,392

Solution 1

If you're on Android 6.0+ you will need to perform a runtime check for permissions. This can be done like so:

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

More information on this can be found in the android documentation here.

Solution 2

If file does not exist first create, than get the absolute path and write your data into it.

     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 ();
        }
Share:
16,392
Wuhu
Author by

Wuhu

Updated on July 26, 2022

Comments

  • Wuhu
    Wuhu over 1 year

    I am using Xamarin.Android and I want to save a .txt file to the SD card. Here is the code that I am using:

      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());
               }
           }    
      }
    

    However, I receive the following error:

    System.UnauthorizedAccessException: Access to the path "/mnt/sdcard/iootext.txt" is denied.

    I have added the following to the manifest:

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

    How can I fix the error?