我一直试图列出所有的MP3和WAV文件在Android设备,但它不会工作。
当我在循环播放时,我得到的错误是NullPointerException
。当我循环时for(int i = 0; i < listFile.length; i++)
,大小为0,它甚至不会循环。
代码:
public class MainActivity extends AppCompatActivity {
private List<File> songs;
private ListView lv;
private File root;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
root = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
songs = getFiles(root);
for(int i = 0; i < songs.size(); i++) {
toast(songs.get(i).toString());
}
}
public ArrayList<File> getFiles(File dir) {
File listFile[] = dir.listFiles();
ArrayList<File> files = new ArrayList<File>();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
System.out.println("File: " + listFile[i].toString());
if (listFile[i].isDirectory()) {
files.add(listFile[i]);
getFiles(listFile[i]);
} else {
if (listFile[i].getName().endsWith(".mp3")
|| listFile[i].getName().endsWith(".wav")) {
files.add(listFile[i]);
}
}
}
}
return files;
}
public void toast(String txt) {
Toast.makeText(getApplicationContext(), txt, Toast.LENGTH_SHORT).show();
}
}
发布于 2018-06-01 10:58:43
File f = new File("path\\to\\file");
for(File file : f.listFile())
{
//some operation
}
NullPointerException
只有当路径不正确时才会出现thrwos
for(int i = 0; i < listFile.length; i++)
for-loop
应该工作正常,没有任何问题,如果给文件路径是正确的。
所以请检查给定的文件路径
https://stackoverflow.com/questions/-100004679
复制相似问题