Android扫描文件(递归法)

扫描文件及文件夹

package com.bwie.demo;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;

public class Demo {

    private static ArrayList<String> list1;
    private static ArrayList<String> list2;

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        list1 = new ArrayList<String>();
        list2 = new ArrayList<String>();
        File file = new File("E:\安装包");
        init(file);
        
        for (String string : list1) {
            
            System.out.println("文件:"+string);
        }
        for (String string : list2) {
            System.out.println("文件夹:"+string);
        }
         
        System.out.println("文件个数:"+list1.size()+"   文件夹个数:"+list2.size());
    }

    private static void init(File file) {
        if (file.exists()) {

            File[] filepath = file.listFiles(new FileFilter() {

                public boolean accept(File file) {
                    // TODO Auto-generated method stub

                    if (file.isDirectory()) {
                        list2.add(file.getName());
                        return true;
                    } else {
                        // 文件
                        list1.add(file.getName());
                        return true;
                    }
                }
            });
            if (filepath != null) {
                for (File file2 : filepath) {

                    if (file2.isFile()) {
                        list1.add(file2.getName());
                    } else {
                        init(file2);
                    }
                }
            }
        } else {
            System.out.println("没有此盘");
        }
    }

}

扫描图片

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;

public class du {
private static List<File> list;

public static void main(String[] args) {
    File file=new File("c:\");
    setData(file);;
}

private static void setData(File file) {
    list = new ArrayList<File>();
    File[] fs=file.listFiles(new FileFilter() {
        
        public boolean accept(File pathname) {
            // TODO Auto-generated method stub
        if(pathname.isDirectory()){
        return true;    
        }else{
            String name = pathname.getName();
            return (name.endsWith(".png")||name.endsWith(".jpg")||name.endsWith(".bmp"));
        }
            
        }
    });
    if(fs!=null){
        for(File f:fs){
            if(f.isFile()){
                list.add(f);
                System.out.println(list.toString());
            }else{
                setData(f);
            }
        }
    }
    
}
}

 扫描视频歌曲

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.ArrayList;

import com.bwie.adapter.MyAdapter;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;
import android.widget.MediaController;
import android.widget.VideoView;

public class MainActivity extends Activity {

    private static ArrayList<File> list;
    private ListView lv;
    private VideoView vv;

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

        /*// 找到该布局文件下的控件
        lv = (ListView) findViewById(R.id.lv);*/
        
        //找到该布局文件下的播放视频的控件
        vv = (VideoView) findViewById(R.id.vv);

        // 创建file类
        String path = Environment.getExternalStorageDirectory().getPath();
        /* File file = new File(path+"/images"); */  //这是扫描图片的路径
        /*File file = new File(path);*/  //这是扫描歌曲的路径
        File file = new File(path);//这是扫描视屏的路径

        // 创建集合对象
        list = new ArrayList<File>();

        // 调用方法进行扫描并过滤该文件夹,并收集扫描出来的图片文件
        saoMiao(file);

        // 打印扫描出来的图片文件
        for (File ff : list) {
            System.out.println(ff.getName());
        }

        /*
         * //为listview设置适配器 lv.setAdapter(new MyAdapter(MainActivity.this,
         * list));
         */
        
        
        /**
         *  播放扫描出来的歌曲
         */
    /*    MediaPlayer player = new MediaPlayer();
        try {
            // 获取路径
            System.out.println(list.get(0).getPath() + "===========");
            player.setDataSource(list.get(1).getPath());// 直接获取文件的路径
            // 准备好硬件
            player.prepare();
            // 开始播放
            player.start();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }*/
        
        
        /**
         * 播放视频
         */
        //设置播放视频的路径
        vv.setVideoPath(list.get(0).getPath());
        //为videoview设置控制器
        MediaController controller = new MediaController(MainActivity.this);
        vv.setMediaController(controller);
        //开始播放视频
        vv.start();
     

    }

    private static void saoMiao(File file) {

        // 列出该文件夹下的所有文件及文件夹
        File[] fs = file.listFiles(new FileFilter() {

            public boolean accept(File pathname) {

                if (pathname.isDirectory())// 如果是文件夹的话就直接收集这个文件夹
                {
                    return true;
                } else {
                    /*
                     * return pathname.getName().endsWith(".png") ||
                     * pathname.getName().endsWith(".jpg") ||
                     * pathname.getName().endsWith(".bmp");
                     */
                    /* return pathname.getName().endsWith(".mp3"); */

                    return pathname.getName().endsWith(".3gp");

                }

            }
        });

        // 将集合进行遍历
        if (fs != null) {
            for (File f : fs) {
                if (f.isFile())// 若是文件就直接收藏起来
                {
                    list.add(f);
                } else {// 若是文件夹的话利用递归的方法进行再次扫描文件夹

                    saoMiao(f);
                }

            }
        }

    }

}
原文地址:https://www.cnblogs.com/1426837364qqcom/p/5199317.html