获取带扩展名的目录中的文件列表

时间:2016-10-17 07:00:18

标签: android

我试图检索所有文件名以及从外部存储扩展到我的应用程序。我已经尝试过,但它显示文件大小= 0"虽然我正在调试,但同时它也显示文件名。请尝试建议我。

private File root;
private ArrayList<File> fileList = new ArrayList<File>();
private LinearLayout view;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    view = (LinearLayout) findViewById(R.id.view);

    //getting SDcard root path
    root = new File(Environment.getExternalStorageDirectory()
            .getAbsolutePath());
    getfile(root);

    for (int i = 0; i < fileList.size(); i++) {
        TextView textView = new TextView(this);
        textView.setText(fileList.get(i).getName());
        textView.setPadding(5, 5, 5, 5);

        System.out.println(fileList.get(i).getName());

        if (fileList.get(i).isDirectory()) {
            textView.setTextColor(Color.parseColor("#FF0000"));
        }
        view.addView(textView);
    }

}

public ArrayList<File> getfile(File dir) {
    File listFile[] = dir.listFiles();
    if (listFile != null && listFile.length > 0) {
        for (int i = 0; i < listFile.length; i++) {

            if (listFile[i].isDirectory()) {
                fileList.add(listFile[i]);
                getfile(listFile[i]);

            } else {
                if (listFile[i].getName().endsWith(".png")
                        || listFile[i].getName().endsWith(".jpg")
                        || listFile[i].getName().endsWith(".jpeg")
                        || listFile[i].getName().endsWith(".gif"))

                {
                    fileList.add(listFile[i]);
                }
            }

        }
    }
    return fileList;
}

}

1 个答案:

答案 0 :(得分:0)

您正在将目录添加到getfiles()方法的文件列表中。因此它显示文件大小为0。 做一个小改动,只需从你的getfiles()方法中删除fileList.add(listFile[i]);。希望它能奏效。