2016-12-01 2 views
0

Мне нужно написать простой текст в файле 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 всегда пуст.

Почему?

+0

не используйте 'getExternalStorageDirectory' напрямую. Используйте 'getExternalFilesDir'. Он вернет путь на SD-карте, где может писать только ваше приложение (в разделе '/ sdcard/Android/data/yourpackage'. Как вы читаете файл? – Blackbelt

+0

попробуйте добавить' ' –

+1

И для зефира и выше вы должны получить разрешение на внешнее хранилище во время выполнения. https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous –

ответ

0

Возможно, вам не хватает разрешения на чтение этого файла. Кроме того, вам не хватает fos.flush() между fos.write() и fos.close(), что может привести к неожиданному поведению.

0

Используйте буферный писатель написать строку в файл

BufferedWriter writer = null; 
try 
{ 
    writer = new BufferedWriter(new FileWriter(SDCARD+File.separator+FILENAME)); 
    writer.write("just a test"); 

} 
catch (IOException e) 
{ 
} 
finally 
{ 
    try 
    { 
     if (writer != null) 
     writer.close(); 
    } 
    catch (IOException e) 
    { 
    } 
} 
Смежные вопросы