Мне нужно написать простой текст в файле test.txt.Не удается записать файл во внешнем хранилище
Это мой код:
String SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
String FILENAME = "test.txt";
File outfile = new File(SDCARD+File.separator+FILENAME);
if (outfile.exists()) { Log.d("Filename","the file exists"); }
Log.d("Filename",SDCARD+File.separator+FILENAME);
FileOutputStream fos = new FileOutputStream(outfile,true);
fos.write("just a test".getBytes());
fos.close();
В манифесте есть запрос на разрешение:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xrobot.john.texttest">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
и targetsdkversion является проявлением этого 15.
Logcat:
12-01 12:57:26.178 29663-29663/com.xrobot.john.softkeyboard D/Filename﹕ the file exists
12-01 12:57:26.178 29663-29663/com.xrobot.john.softkeyboard D/Filename﹕ /storage/emulated/0/test.txt
, а файл text.txt всегда пуст.
Почему?
не используйте 'getExternalStorageDirectory' напрямую. Используйте 'getExternalFilesDir'. Он вернет путь на SD-карте, где может писать только ваше приложение (в разделе '/ sdcard/Android/data/yourpackage'. Как вы читаете файл? – Blackbelt
попробуйте добавить' ' –
И для зефира и выше вы должны получить разрешение на внешнее хранилище во время выполнения. https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous –