获取文件的所有列表中的文件夹及其与扩展子文件夹 [英] Get a List of All the Files in a Folder and Its Subfolders with extension

查看:108
本文介绍了获取文件的所有列表中的文件夹及其与扩展子文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我真的试图文件的获取列表中的文件夹及其扩展名为.MP3子文件夹,但功能只适用于根目录文件夹返回.mp3文件。

I`m trying get list of files in folder and its subfolders with extension ".mp3" , but the function return .mp3 files only in root folder.

我真的需要一个结构,这个样子的。

I`m need a structure look like this

http://s1.ipicture.ru/uploads/20130530/Kiju7Bf7.png
该人士$ ​​C $ C:

http://s1.ipicture.ru/uploads/20130530/Kiju7Bf7.png The source code:

private ListView lvFolders;
private File file;
private List<String> myList;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.folder, null);
    lvFolders = (ListView) v.findViewById(R.id.lvFolders);

    myList = new ArrayList<String>();

    String root_sd = Environment.getExternalStorageDirectory().toString();
    file = new File(root_sd);
    addToSongs(file);

    /*File list[] = file.listFiles();
    for (int i = 0; i < list.length; i++) {
        myList.add(list[i].getName());
    }*/

    lvFolders.setAdapter(new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, myList));

    lvFolders.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long arg3) {
            File temp_file = new File(file, myList.get(position));

            if (!temp_file.isFile()) {
                file = new File(file, myList.get(position));
                File list[] = file.listFiles();

                myList.clear();

                for (int i = 0; i < list.length; i++) {
                    myList.add(list[i].getName());
                }
                Toast.makeText(getActivity(), file.toString(),
                        Toast.LENGTH_LONG).show();
                lvFolders.setAdapter(new ArrayAdapter<String>(
                        getActivity(), android.R.layout.simple_list_item_1,
                        myList));
            }
        }
    });

    return v;

}

FilenameFilter textFilter = new FilenameFilter() {
    public boolean accept(File dir, String name) {
        return (name.endsWith(".mp3"));
    }
};

private void addToSongs(File home) {
    for (File file : home.listFiles(textFilter)) {
        if (file.isDirectory()) {
            addToSongs(file);
        } else {
            myList.add(file.getAbsolutePath());
        }
    }
}

我在做什么错了?

What i'm doing wrong?

推荐答案

这code可以帮助:

public static void main(String[] args) 
{
    File file = new File("C:/MyDirectory");
    List<File> list = new ArrayList<File>();
    getMp3Files(file, list);
    // Use list which contains the files with .mp3 extension
}

public static void getMp3Files(File rootfile, List<File> list)
{       
    File[] files; 
    if(rootFile.isDirectory())
    {   
        files = rootfile.listFiles();
    }
    else
        return;
    for (File file : files)
    {
        if(file.isDirectory())
        {
            getMp3Files(file, list);
        }
        else
        {
            if(file.getName().endsWith(".mp3"))
            {
                list.add(file);
            }
        }
    }

}

这篇关于获取文件的所有列表中的文件夹及其与扩展子文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆