android 扫描文件栈溢出问题,自己写的扫描文件方法
class Scaning{ private ArrayList<String> list;//保存扫描的文件 public List<String> queue=null;//用一个list,做法跟队列一样 public Scaning(String root){ list=new ArrayList<String>(); queue=(List<String>) Collections.synchronizedList(new LinkedList<String>()); queue.add(root); } public void scaning(){ new Thread(new Runnable() { @Override public void run() { if(queue.size()>0){ new Thread(new ScanThread(queue.get(0))).start(); } } }).start(); } class ScanThread implements Runnable{ private String root; private File [] files; ScanThread(String root){ this.root=root; } @Override public void run() { synchronized (queue) { if(null!=root){ files=new File(root).listFiles(); if(null!=files){ for(File f:files){ if(f.isDirectory()){ queue.add(f.getAbsolutePath()); }else{ list.add(f.getAbsolutePath()); Log.e("ScanFile",f.getAbsolutePath()); } } } queue.remove(root); if(queue.size()>0){ new Thread(new ScanThread(queue.get(0))).start(); }else{ Log.e("ScanFile","scaning finish"); } } } } } }