我正在为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的文件结构等等,所以如果你能回答的话就像是在跟白痴说话一样,我会永远感激不尽!
答案 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());
}