2016-12-01 78 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'。它會在sdcard上返回一個只有你的應用可以寫入的路徑(在'/ sdcard/Android/data/yourpackage'下。你如何讀取文件? – Blackbelt

+0

嘗試添加'<使用權限android:name =「android。權限.READ_EXTERNAL_STORAGE「/>' –

+1

而對於棉花糖及以上版本,您必須在運行時取得外部存儲權限 https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous –

回答

0

您可能缺少閱讀該文件的權限。 此外,您在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) 
    { 
    } 
} 
相關問題