首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何列出设备中的所有文件?

如何列出设备中的所有文件?
EN

Stack Overflow用户
提问于 2018-06-01 01:52:22
回答 1查看 0关注 0票数 0

我一直试图列出所有的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();
}
}
EN

回答 1

Stack Overflow用户

发布于 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应该工作正常,没有任何问题,如果给文件路径是正确的。

所以请检查给定的文件路径

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档