1

我在项目中有一个目录 /sdcard/audio 。此目录包含一些音频 (wav) 文件。
这是我想要做的:
1. 从目录中读取。
2.播放wav文件。

我为访问目录而编写的代码如下:

String path_to_media = "/sdcard/audio/";
File dirEffectFiles = new File(path_to_media);   //gets a handle to the directory of effect files.
Log.v(this.toString(), "Getting into path = " + path_to_media);
Log.v(this.toString(), "Some details about the directory: path = " + dirEffectFiles.getPath()
                + " Can read: " + dirEffectFiles.canRead() + " list:" + dirEffectFiles.list()
                + " absolute path:" + dirEffectFiles.getAbsolutePath() + " is absolute:" + dirEffectFiles.isAbsolute()); 

我得到的上述输出是:

01-13 16:23:34.941:关于目录的一些细节:path = /sdcard/audio 可以阅读:false list:null absolute path:/sdcard/audio is absolute:true

我有以下问题:
1. 如何使上述文件夹可读?通过设置dirEffectFiles.setReadable(true)?
2.另外,请注意path_to_media上面是/sdcard/audio/。打印时,最后一个“/”消失。这是一些内部解析的正常影响还是我应该担心?

非常欢迎任何帮助,
谢谢,
Sriram。

4

2 回答 2

1

您是否为 AndroidManifest.xml 添加了正确的权限?

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

此外,明智的做法是使用环境方法来获取正确的 SD 卡路径:

Environment.getExternalStorageDirectory()

另外,你从中得到什么:

dirEffectFiles.exists()
于 2011-01-13T11:33:07.347 回答
0

上面提到的 /sdcard/audio 是在项目目录中创建的目录。这种方法是错误的。必须使用 adb 创建模拟 sdcard 的目录(在命令提示符 (windows) 中),如下所示:

  1. adb shell mkdir /sdcard/audio - 这将在 sdcard/ 中创建 audio/ 子目录
  2. adb push "complete path of file name to be pushed" /sdcard/audio/file-name
  3. 对其他波形文件重复此过程。

而已。您应该能够从挂载的 /sdcard 目录中读取文件。
@thoredge:感谢您的帮助。

于 2011-01-18T13:59:11.253 回答