如何用递归获取一个文件夹内的所有文件存放在一个文件数组中

如何用递归获取一个文件夹内的所有文件存放在一个文件数组中,第1张

可以先读取出文件夹内的所皮裤枯有文件,读出来之后,放到一个文件中,然后再

用数据取出来。存到数组中,public

class

IOtest{

public

static

void

main(String

args){

String

str

=

"燃洞c:\\"//假设纯笑要读c盘中的所有文件,也可以自己写一个文件路径

File

f

=

new

File(str)

fun(f)

}

public

static

void

fun(File

f){

if(f.idDirectory()){

File

file

=

f.listFile()//列出所有目录

try{

for(int

i=0

i<file.length

i++){

fun(file)

}

}carch(Exception

e){

}else{

System.out.print(f)

}

}

}}上面这段代码是把目录下的文件全部列出来,你可以再写一个读取的

把相对路径的字符串当做参数吧。然后递归的时候,路径字符串的实参应该再加上你卜山的下一个文件庆弊州夹名。比方说createFolder(string path)

{

//create folder 创建文件誉蔽夹的代码你自己写吧,

createFolder(path+“\上面创建的文件夹名称”)

}

对C#的文件API不太熟悉,所以我写点伪代码吧,注意是伪代码啊,只要知道递归的结构怎么样应该就可以了写了吧~

说实话,我有点不明白你为什么要在这个问题上用递归,一般人都是想把递归化为非递归的啊。。。

void CreateDirectory(Directory d, string[] paths, int depth)

{

if (depth == paths.Length-1) // 说明到了最里层了

{ CreateFile(d, paths[paths.Length-1])return} // 创建具体的蚂简文本文件

Directory dir = CreateDir(d, paths[depth])// 在文件夹d先创让物陵先以paths的第depth的元素为名字的文件夹

CreateDirectory(dir, paths, depth + 1)// 用新建的文件夹继续递归下去

}

最开始的时候用C盘创建文件夹folder,然后建立好所有要创建的文件夹和文件的名字数组坦戚path,然后就调用CreateDirectory(folder, path, 0)


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存