将文件写入外部存储

时间:2014-02-24 19:59:43

标签: java android file-io

我正在尝试将新的wave文件写入外部存储设备上的Ringtones文件夹。但遗憾的是,该文件尚未创建。

我已经按照Android文档关于如何执行此操作,并按照建议的方式实现了它。

我还在清单中添加了适当的权限。同样,我已经检查过我的设备外部存储器是可读/可写的。

以下代码编写日志语句“未创建目录”。同样,任何后续的stream调用都会导致nullPointer。

public WavFileOutStream(String fileName)
{

    // Get the directory for the user's public pictures directory. 
    File file = new File(Environment.getExternalStoragePublicDirectory(
             Environment.DIRECTORY_RINGTONES), fileName);
    if (!file.getParentFile().mkdirs()) {
         Log.e("trace", "Directory not created");
    }

    try {
        stream = new DataOutputStream(new FileOutputStream(file));

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 

}

2 个答案:

答案 0 :(得分:0)

您误解了日志消息的含义及其原因。

记录File.mkdirs()返回:

  • 如果目录已创建,则为true,

  • 失败时
  • 错误或目录已存在

由于铃声文件夹可能已经存在,你可能会遇到第二种情况。

如果您仍然有其他原因认为这不起作用,请将以下catch块生成的任何堆栈跟踪编辑到问题正文中。

答案 1 :(得分:0)

我经常忘记自己。确保您在申请清单中拥有此权限:)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>