例如,当前文件夹为abc
abc下又有a,b,c三个文件夹和d.txt,e.txt,f.txt三个文件
请问如何获得abc下所有内容的名字包括文件夹。

解决方案 »

  1.   

    import java.io.*;
    import java.util.*;
    public class ListFile {
    public static void main(String[]args){
    ArrayList<String> files = new ArrayList<String>();
    list(files,"F:\\_Video");
    System.out.println(files.size());
    Iterator it = files.iterator();
    while(it.hasNext()){
    System.out.println(it.next());
    }
    }

    public static void list(List<String> lst,String path){
    File f = new File(path);
    if(f.isDirectory()){
    lst.add(f.getAbsolutePath()+"\\");
    String dirs[] = f.list();
    for(int i=0; dirs!=null&&i<dirs.length; i++){
    list(lst,f.getAbsolutePath()+"\\"+dirs[i]);
    }
    }
    if(f.isFile()){
    lst.add(f.getAbsolutePath());
    }
    }
    }
      

  2.   

    ArrayList<String> files = new ArrayList<String>();
    请问<String>中的<>是什么意思?
    还有我的问题中a,b,c三个文件夹同d.txt,e.txt,f.txt是位于同一个文件夹下的应该不需要递归吧
    而且我并不想获得a,b,c三个文件夹下的内容。
      

  3.   

    <String>是jdk1.5的泛型,get的时候就不需要强制转换了
    import java.io.*;
    import java.util.*;
    public class ListFile {
    public static void main(String[]args){
    ArrayList<String> files = new ArrayList<String>();
    list(files,"F:\\_Video");
    Iterator it = files.iterator();
    while(it.hasNext()){
    String str = (String)it.next();
    System.out.println(str.substring(str.lastIndexOf("\\")+1));
    }
    }

    public static void list(List<String> lst,String path){
    File f = new File(path);
    if(f.isDirectory()){
    lst.add(f.getAbsolutePath()+"\\");
    String dirs[] = f.list();
    for(int i=0; dirs!=null&&i<dirs.length; i++){
    list(lst,f.getAbsolutePath()+"\\"+dirs[i]);
    }
    }
    if(f.isFile()){
    lst.add(f.getAbsolutePath());
    }
    }
    }