小弟写了个
但返回不正确.package com.yourcompany.util;import java.io.File;public class FileManager { String dir = ""; public String[] serachFiles(String dir) { File root = new File(dir); File[] filesOrDirs = root.listFiles(); String[] result = new String[1000];//这里,文件个数不知道多少.
int j = 0;
for (int i = 0; i < filesOrDirs.length; i++) {
if (filesOrDirs[i].isDirectory()) {
serachFiles(filesOrDirs[i].getAbsolutePath());
} else {
result[i] = filesOrDirs[i].getName();
System.out.println("result[" + i + "]" + result[i]);
               //这里如果把result正确的返回给主函数 }
} return result; } /**
 * @param args
 */
public static void main(String[] args) {
FileManager fm = new FileManager();
String[] files = fm.serachFiles("D:/abc");
for (int i = 0; i < files.length; i++) {
System.out.println("files[" + i + "]" + files[i]);
} }
}

解决方案 »

  1.   

    String[] result = new String[filesOrDirs.length];//这里,文件个数不知道多少.
      

  2.   

    for (int i = 0; i < filesOrDirs.length-1; i++) {。}应该filesOrDirs.length-1
      

  3.   

    String[] result = new String[filesOrDirs.length]
    这样不行,还有子目录
      

  4.   

    行了.
    package com.daacc.common;import java.io.File;public class FileManager { String dir = ""; String temp = ""; public String[] serachFiles(String dir) { File root = new File(dir); File[] filesOrDirs = root.listFiles(); String[] result = new String[10]; for (int i = 0; i < filesOrDirs.length; i++) {
    if (filesOrDirs[i].isDirectory()) {
    serachFiles(filesOrDirs[i].getAbsolutePath());
    } else {
    result[i] = filesOrDirs[i].getName(); temp += filesOrDirs[i].getName() + ","; }
    } return temp.split(","); } /**
     * @param args
     */
    public static void main(String[] args) {
    FileManager fm = new FileManager();
    String[] files = fm.serachFiles("D:/abc");
    for (int i = 0; i < files.length; i++) {
    System.out.println("files[" + i + "]" + files[i]);
    } }
    }
      

  5.   

    package test;import java.io.File;
    import java.util.ArrayList;
    import java.util.List;public class Test { public List getAllFiles(String root) {
    List folders = new ArrayList();
    File file = new File(root);
    if (file.exists() && file.isDirectory()) {
    File[] files = file.listFiles();
    for (int i = 0; i < files.length; i++) {
    File f = (File) files[i];
    if (f.isDirectory()) {
    folders.add(f);
    List children = getAllFiles(f.getAbsolutePath());
    if (children != null) {
    folders.addAll(children);
    }
    }
    }

    return folders;
    }
    return null;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
    List files = new Test().getAllFiles("C:\\Documents and Settings\\Wilson Wu\\桌面\\youbin\\code");
    File[] aa = new File[files.size()]; 
    files.toArray(aa); 
    for (int i = 0; i < files.size(); i++) {
    System.out.println(((File) files.get(i)).getName());
    }
    for (int i = 0; i < aa.length; i++) {
    System.out.println(aa[i].getName());
    }
    }}
      

  6.   

    一般在不知道长度的情况下要使用List!实在要数组,再转换!!
      

  7.   

    程序1
    ====
    这个程序就足够你列出目录下的所有文件夹名称,包括文件名称,但是这种结构尽量做出树状展现,参看程序2,对程序1的修改
    ===================================================================
    import java.io.*;public class FileList {
    public static void main(String[] args) {
    File f = new File("d:\\mytest");
    listChilds(f);
    }

    public static void listChilds(File f) {



    System.out.println(f.getName());
    if(!f.isDirectory()) return;
    File[] childs = f.listFiles();
    for(int i=0; i<childs.length; i++) {
    listChilds(childs[i]);
    }
    }
    }
    ====================================
    程序2
    ====
    import java.io.*;public class ListFile {
    public static void main(String[] args) {
    File f = new File("d:\\test");

    listChilds(f, 0);
    }

    public static void listChilds(File f, int level) {

    String preStr = "";
    for(int i=0; i<level; i++) { preStr += "    "; }

    System.out.println(preStr + f.getName());
    if(!f.isDirectory()) return;
    File[] childs = f.listFiles();
    for(int i=0; i<childs.length; i++) {
    listChilds(childs[i], level + 1);
    }
    }
    }