java遍历指定文件夹下的所有子文件夹怎么 *** 作?

java遍历指定文件夹下的所有子文件夹怎么 *** 作?,第1张

import java.io.File \x0d\x0aimport java.io.IOException \x0d\x0apublic class FileDemo11{\x0d\x0apublic static void main(String args[]){\x0d\x0aFile my = new File("d:" + File.separator) // *** 作路径,可以有外部参数决定的\x0d\x0aprint(my) \x0d\x0a}\x0d\x0apublic static void print(File file){// 递归调用\x0d\x0aif(file!=null){// 判断对象是族迟岩否为空\旦搜x0d\x0aif(file.isDirectory()){// 如果是目录\x0d\x0aFile f[] = file.listFiles() // 列出全部的文件兆御\x0d\x0aif(f!=null){// 判断此目录能否列出\x0d\x0afor(int i=0i<f.lengthi++){\x0d\x0aprint(f[i]) // 因为给的路径有可能是目录,所以,继续判断\x0d\x0a}\x0d\x0a}\x0d\x0a}else{\x0d\x0aSystem.out.println(file) // 输出路径\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a}

首先,我们先来厅仔遍历一下D盘根目录下所扮漏汪有的子文件:public

static

void

fileList()

{

File

file=new

File("d:/")

File[]

files

=

file.listFiles()

if

(files

!=

null)

{

for

(File

f

:

files)

{

System.out.println(f.getPath())

}

}

}对此,我们肯定不满足,我们需要遍历D盘下所有的文件和文件夹,而不是根目录下的文件夹,这个时候我们需要使用到递归:public

static

void

fileList(File

file)

{

File[]

files

=

file.listFiles()

if

(files

!=

null)

{

for

(File

f

:

files)

{

System.out.println(f.getPath())

fileList(f)

}

}

}然后在主函数中调用:public

static

void

main(String[]

args)

{

File

file=new

File("d:/")

fileList(file)

}结果是不是能令你满意呢?显然,输出的都是全路径,我们可以对我们的递归函数做如下改进:

public

static

void

fileList(File

file,int

node)

{

node++

File[]

files

=

file.listFiles()

if

(files

!=

null)

{

for

(File

f

:

files)

{

for(int

i=0i<nodei++){

if(i==node-1){

System.out.print("├")

}

else{

System.out.print("

")

}

}

System.out.println(f.getName())

fileList(f,node)

}

}

}然后再次在主函数中调用:public

static

void

main(String[]

args)

{

File

file=new

File("d:/搜陵")

fileList(file,0)

}得到的结果是一个类似树状的结构,如果你对此还不满意,可以尝试给JTree上添加节点,可以做到和资源管理器中一样的结构。

主要应用递归算法

/**

*

*/

package com.dianziermu.io

import java.io.File

import java.util.ArrayList

import java.util.List

/**

* 遍历文件夹及其下面的所有文件夹,递归

*

* @author 点子二木

* @date 2009-6-10

* @version 1.0

*/

@SuppressWarnings("unchecked")

public class FolderIO {

static List<File>gblFoldList = new ArrayList()

/**

* @param args

*/

public static void main(String[] args) {

String path = "c:\\Program Files"// 将要搜索目录路径

System.out.println("隐咐获取"+path + "目录下所有文件夹,正在加载......")

readFolder(path)

printFolder()

}

/**

* 获取文件对象

*

* @param path

*/

private static void readFolder(String path) {

File dir = new File(path)// 建立代表Sub目录的File对象,并得到它的一个引用

if (dir.exists()) {// 检查目录是否存在

File[] dirList = dir.listFiles()// 获取该乱嫌目录下所有文件和文件夹

for (int index = 0index <dirList.lengthindex++) {

if (dirList[index].isDirectory()) {// 如果是文件夹

// System.out.println(dirList[index])

gblFoldList.add(dirList[index])

readFolder(dirList[index].getPath())// 注意:此处递归

}

}

} else {

System.out.println("该文件夹不存在")

}

}

/**

* 打印文灶陪纯件夹对象

*/

private static void printFolder() {

for (int index = 0index <gblFoldList.size()index++) {

System.out.println(gblFoldList.get(index))

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12127273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存