如题 我编了一个程序:只能读出一部份,各位大人帮忙看看 急呀
public static File[] findDir(File file)throws Exception {
      
      if (!file.exists())
          return null;      if (file == null || !file.isDirectory())
          throw new Exception("文件对象为空或不是文件夹!   ");      File[] child = file.listFiles();      for (int i = 0; i < child.length; i++) {
          if (child[i].isDirectory())
              return findDir(child[i]);
      }          return child;  }

解决方案 »

  1.   

    for (int i = 0; i < child.length; i++) 
    {
    if (child[i].isDirectory())
    return findDir(child[i]);
    }
    你看看你的程序的逻辑啊
    当是目录的时候,你的程序就直接return 了。你的程序返回的应该是最下层目录的非目录文件!
      

  2.   

    public static void main(String[] args)
    {
    try
    {
    File file = new File("F:\\practice");
    List list = new ArrayList();
    findDir(file, list);
    Iterator iterator = list.iterator();
    while (iterator.hasNext())
    {
    File fileIterm = (File)iterator.next();
    System.out.println(fileIterm.getAbsolutePath());
    }
    }
    catch(Exception e)
    {

    }

    } public static void findDir(File file, List list)throws Exception {

    if (list == null)
    {
    throw new NullPointerException("List cannot be null!");
    } if (!file.exists())
    {
    return;
    } if (file == null || !file.isDirectory())
    {
    throw new Exception("文件对象为空或不是文件夹! ");
    } File[] child = file.listFiles(); for (int i = 0; i < child.length; i++) 
    {
    if (child[i].isDirectory())
    {
    findDir(child[i], list);
    }
    else
    {
    list.add(child[i]);
    }
    }
    }已经在我本机上运行了! 可以的
      

  3.   

    package temp;import java.io.File;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class FT { public static List findDir(File file) throws Exception {

    if (!file.exists())
    return null;


    List list = new ArrayList();

    List sublist=new ArrayList();

    if(file.isFile()){
    list.add(file);
    return list;
    }

    File[] child = file.listFiles();
    for (int i = 0; i < child.length; i++) {
    if(child[i].isFile()){
    list.add(child[i]);
    }

    if (child[i].isDirectory()){
    sublist=findDir(child[i]);
    list.addAll(sublist);
    }

    } return list; } /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    try {
    List f = FT.findDir(new File("D:/virtual machine"));
    Iterator it = f.iterator();
    while (it.hasNext()) {
    File file = (File) it.next();
    System.out.println(file.getName());
    }
    } catch (Exception e) {
    e.printStackTrace();
    } }}