Записать в файл на SD-карте в Android - PullRequest
1 голос
/ 18 ноября 2011

Я попробовал простую программу записи файлов в Android.

 try 
            {
                //File f1=new File("/sdcard/Prag.txt");
                File f1=new File("J:\\Prag.txt");
                BufferedWriter out = new BufferedWriter(new FileWriter(f1,true));
                out.write("Pragadheesh" + "\n");
                out.close();

                } catch (IOException ioe) 
                  {ioe.printStackTrace();}

Но исключение - удар. Как я могу это исправить?

[править]: Я пытался File f1=new File(Environment.getExternalStorageDirectory() + "//Prag.txt"); и значение f1 = /mnt/sdcard/Prag.txt Но все же исключение получает удар. Я тоже изменил разрешение в файле манифеста

[раствор] Согласно ответу Кришнабхадры, я должен был убедиться, что ваша SDCard не установлена ​​на ПК

Ответы [ 5 ]

9 голосов
/ 18 ноября 2011

Android основан на Linux, поэтому пути в стиле Windows, такие как "J:\\prag.txt", не будут работать. В Linux пути такие: "/folder1/folder2/file.txt"

Также не используйте жестко закодированные пути, потому что разные телефоны могут иметь разные пути для SD-карты. Поэтому вам следует использовать Environment.getExternalStorageDirectory(), который указывает путь к SD-карте программно.

Так что используйте:

File f1=new File(Environment.getExternalStorageDirectory() + "Prag.txt");

Также добавьте необходимое разрешение:

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

Внутри вашего манифеста, где-то за пределами application тега.

3 голосов
/ 18 ноября 2011

Все приведенные выше ответы полезны. Но помните еще одну вещь. Убедитесь, что ваша SDCard не установлена ​​на ПК. Только одно устройство может получить доступ к SDCard одновременно. т. е. компьютер или телефон могут получить доступ к SD-карте, но не к обеим одновременно. Если она смонтирована на ПК, ваш код не будет работать. См. this thread

2 голосов
/ 18 ноября 2011

Заменить:

File f1=new File("J:\\Prag.txt");
BufferedWriter out = new BufferedWriter(new FileWriter(f1,true));

на:

BufferedWriter out = new BufferedWriter(new FileWriter(Environment.getExternalStorageDirectory(),"prag.txt"))
1 голос
/ 18 ноября 2011

что это за путь "J: \ Prag.txt" ;Android doesn't recognize any drive path like system.

Используйте для этого путь sdcard.

File f1=new File(Environment.getExternalStorageDirectory()+"/Prag.txt");

Также укажите разрешение в файле манифеста.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1 голос
/ 18 ноября 2011

Вы установили необходимое разрешение в манифесте?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...