public void traverseFolder2(String path) {
File file = new File(path)
if (file.exists()) {
File[] files = file.listFiles()
if (null == files || files.length == 0) {
System.out.println("文件夹是空的!")
return
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath())
traverseFolder2(file2.getAbsolutePath())
} else {
System.out.println("文件:" + file2.getAbsolutePath())
}
}
}
} else {
System.out.println("文件不存在!")
}
}
扩展资戚举料
public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0
File file = new File(path)
if (file.exists()) {
LinkedList<File>list = new LinkedList<File>()
File[] files = file.listFiles()
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath())
list.add(file2)
foldeNum++
} else {
System.out.println("文件:" + file2.getAbsolutePath())
fileNum++
}
}
File temp_file
while (!list.isEmpty()) {
temp_file = list.removeFirst()
files = temp_file.listFiles()
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath())
list.add(file2)
folderNum++
} else {
System.out.println("文件:" + file2.getAbsolutePath())
fileNum++
}
}
}
} else {
System.out.println("文件不存在!")
}
System.out.println("文件夹共有:" + folderNum + ",文件共笑仔桥有:"碰猛 + fileNum)
}
参考资料:百度百科 Java
使用dir.h库的两个函数即可:findfirst和findnext。首先调用findfirst函数查找是否有满足条件的某目录文件,如果返回值非0则表示找不到返蔽友皮回。
如果findfirst返回值为0,则循环调用findnext函数,根据返回值,如果为0,结束循环,遍历结束。否则循环调用findnext即可遍历,直到返回非0值即可。
当然,这两个函数需要告洞定义一个结构体来存储函数返回的数据。结构体如下:
struct
ffblk
{
char
ff_reserved[21]
/*DOS保留字*/
char
ff_attrib
/*文件属性*/
int
ff_ftime
/*文件时间*/宏差
int
ff_fdate
/*文件日期*/
long
ff_fsize
/*文件长度*/
char
ff_name[13]
/*文件名*/
}
将结构体中的ff_name[13]显示出来即可。
这是一个递归调用的做法。你可以做个函数 findAll 参数是 目录名 。
开始遍历,当雹瞎你发现当前是目录。应该再调用函数findall,传入目宏友录,蔽肆槐让函数去遍历子目录。这样函数返回后,你可以继续遍历。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)