无法写入外部存储空间

时间:2016-12-01 12:15:45

标签: android android-external-storage

我需要在文件“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始终为空。

为什么?

2 个答案:

答案 0 :(得分:0)

您可能缺少阅读该文件的权限。 此外,您在fos.flush()fos.write()之间缺少fos.close(),这很容易导致意外行为。

答案 1 :(得分: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)
    {
    }
}