如何遍历目录包括子目录?

suncheng_hong 2007-06-29 03:28:42
小弟写了个
但返回不正确.

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]);
}

}
}


...全文
212 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dodozhu 2007-06-29
  • 打赏
  • 举报
回复
程序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);
}
}
}
wf100200 2007-06-29
  • 打赏
  • 举报
回复
关注 up
youbin_ 2007-06-29
  • 打赏
  • 举报
回复
一般在不知道长度的情况下要使用List!实在要数组,再转换!!
youbin_ 2007-06-29
  • 打赏
  • 举报
回复
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());
}
}

}
suncheng_hong 2007-06-29
  • 打赏
  • 举报
回复
行了.
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]);
}

}
}
suncheng_hong 2007-06-29
  • 打赏
  • 举报
回复
String[] result = new String[filesOrDirs.length]
这样不行,还有子目录
xwtcss 2007-06-29
  • 打赏
  • 举报
回复
for (int i = 0; i < filesOrDirs.length-1; i++) {。。。。}

应该filesOrDirs.length-1
xwtcss 2007-06-29
  • 打赏
  • 举报
回复
String[] result = new String[filesOrDirs.length];//这里,文件个数不知道多少.

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧