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

Python025

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 回答于 2022-11-15

首先,我们先来遍历一下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上添加节点,可以做到和资源管理器中一样的结构。

首先,我们需要获取磁盘中所有的盘符路径:jdk6中一个方法搞定:

File [] roots = File.listRoots()

然后,通过每个路径来进行向下遍历,上代码(手敲,各种小错误别怪我,看思路就好):

import java.io.File

/**

由于本人使用了junit,请自行添加main方法测试

*/

public class Test{

@org.junit.Test

public void testfiles(){

File [] roots = File.listRoots()

for(File f:roots){

System.out.println(f.getAbsolutePath())

}

listFiles(roots)

}

public void listFiles(File[] files){

if(files==null||files.length==0)return

    for(File f : files){

     if(f.isDirectory()){

     System.out.println(f.getAbsolutePath())

     listFiles(f.listFiles())

     }else{

     System.out.println("\t|"+f.getName())

     }

    }

}

}