Android文件结构:如何访问存储的mp3文件?

时间:2013-12-19 02:57:35

标签: android

我正在为Android手机(Nexus 5)制作应用程序。我希望我的应用程序访问已经存在的名为“Music”的文件夹,与通过usb连接时拖放音乐文件的音乐文件夹相同。

我的Windows 7计算机上的路径是:“Computer \ Nexus 5 \ Internal storage \ Music”

它表示windows路径中的内部存储,但就android的编程而言,这是内部还是外部存储?这似乎是一个愚蠢的问题,但从我读到的音乐文件夹不应该是特定于应用程序的文件夹。

这让我想问为什么当我使用这段代码时,为什么我一直为allFiles获取一个空指针:

File file = Environment.getExternalStorageDirectory();
File[] allFiles = file.listFiles();

String path = Environment.getExternalStorageDirectory().toString();
File yourDir = new File(path) ;       
File allFiles[] = yourDir.listFiles();

File musicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
File[] allFiles = musicDirectory.listFiles();

除了前两个不直接进入音乐文件夹之外,其他只有三种不同的方式做同样的事情。

我没有经验,也不熟悉android的文件结构等等,所以如果你能回答的话就像是在跟白痴说话一样,我会永远感激不尽!

1 个答案:

答案 0 :(得分:0)

您看到的音乐文件夹是外部的,以Android术语表示。

File musicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
File[] allFiles = musicDirectory.listFiles();

这应该是理想的工作。您可以检查它返回的绝对路径是什么。然后,查看该文件夹是否包含任何文件。

String t = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_MUSIC).getAbsolutePath();
System.out.println(t);

File f = new File(t);
File[] fs = f.listFiles();
for(int i=0;i<fs.length;i++){
    System.out.println(fs[i].getAbsolutePath());
}