【发布时间】:2014-02-24 19:59:42
【问题描述】:
我正在尝试将新的波形文件写入外部存储上的 Ringtones 文件夹。但不幸的是,该文件没有被创建。
我遵循了有关如何执行此操作的 android 文档,并按照建议的方式实施了它。
我还在清单中添加了适当的权限。同样,我检查了我的设备外部存储是否可读/可写。
以下代码写入日志语句“目录未创建”。同样,对流的任何后续调用都会导致 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();
}
}
【问题讨论】:
-
您的文件系统中是否已经存在 Ringtones 目录?
-
是的,目录铃声已经存在。
-
在这种情况下 mkdir() 将返回 false....请参阅 docs.oracle.com/javase/7/docs/api/java/io/File.html#mkdir()
-
是的,我忘记添加我认为它没有成功打开的其他原因。我编辑了最初的帖子。我得到对 DataOutputStream 流的任何其他调用的空指针异常。
-
尝试 file.createFile() 然后创建 OutputStream'