无法在android上写入文件txt

时间:2012-07-24 01:58:06

标签: android permissions file-manager

我尝试制作短信日志,但我的设备发送了这样的错误消息

07-18 10:11:33.956: E/One(1320): Could not write file /sdcard/log.txt (Permission denied)

我的代码写文件

File root = Environment.getExternalStorageDirectory();
try 
{
    BufferedWriter fw = new BufferedWriter(new FileWriter(new File("/sdcard/log.txt"), true));
    if (root.canWrite()) 
    {
        fw.newLine();
        fw.write("----+ Monitoring SMS +----" + "\n");
        fw.write("- Pesan Masuk "+ "\n");
        fw.write(logSMS + "\n");
        fw.write("          ----+||+----" + "\n");
        fw.newLine();
        fw.close();
    } 
} catch (IOException e) {
    Log.e("One", "Could not write file " + e.getMessage());
}   

我的应用的明确许可

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CALENDAR"></uses-permission>
<uses-permission android:name="android.permission.READ_CALENDAR"></uses-permission>

我找不到任何错误,请帮帮我

3 个答案:

答案 0 :(得分:1)

在某些设备上,SD卡不在根目录中。

你想要做的就是用"/sdcard/log.txt"代替root + "/log.txt",你有SD卡,但你没有使用它。

答案 1 :(得分:1)

您无法写入SD卡的根目录。在SDCard上创建一个文件夹,然后写入。

http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()

答案 2 :(得分:0)

你能尝试替换

吗?
BufferedWriter fw = new BufferedWriter(new FileWriter(new File("/sdcard/log.txt"), true));

BufferedWriter fw = new BufferedWriter(new FileWriter(new File(root.getAbsolutePath() + "/log.txt"), true));

这是为了确保您的代码正在写入系统分配的外部存储路径。因为它在不同的设备之间有所不同。