java递归:查询e盘下所有文件夹及其子文件夹里名为s的文件并打印,s为从控制台输入的需要查询的文件名

java递归:查询e盘下所有文件夹及其子文件夹里名为s的文件并打印,s为从控制台输入的需要查询的文件名,第1张

public static void main(String[] args) throws Exception {

System.out.print("请输入检索的盘符:")

Scanner input = new Scanner(System.in)

String pf = input.next()

System.out.print("请输入检索的字符串:")

String s = input.next()

File file = new File(pf + ":/")

if (!file.isDirectory()) {

System.out.println("盘符不存在,或没有内容!")

return

}

js(file, s)

}

public static void js(File file, String s) throws Exception {

if (file == null)

return

if (file.isFile()) {// 判断是否是文件

String name = file.getName()// 取得文件的名字

// 文件的名字没有乎岩去岁裤御掉后缀,这段代码你自己写吧。

name = name == null ? "" : name.trim()

String path = file.getPath()/纯槐/ 取得文件路径

if (name.equalsIgnoreCase(s))// 如果文件名于录入的字符串相等打印文件路径

System.out.println(path)

}

File[] files = file.listFiles()// 取得文件夹中包含的文件及文件夹

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

return// 如果没有其中没有文件或文件夹,返回

for (File file2 : files) {// 循环其下所有文件及文件夹

js(file2, s)// 递归

}

}

大体上是这样的。

/**

* 查询指定余族哗目录下文件名符合正则表达式的文件

* @param list 用于保存符合条件的文件

* @param file 需要遍历竖行的目录

* @param reg 条件正则表达式

*/

public static void getFiles(List<File>list, File file, String reg) {

if (file.isFile()) {//若file是文件

if (Pattern.matches(reg, file.getName())) {

list.add(file)

}

return

}

//穗薯file是文件夹

File[] files = file.listFiles()

for (File f : files) {

if (f.isDirectory()) {//f是文件夹则递归

getFiles(list, f, reg)

} else {

if (Pattern.matches(reg, f.getName())) {

list.add(f)

}

}

}

}


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

原文地址: https://outofmemory.cn/tougao/12136440.html

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

发表评论

登录后才能评论

评论列表(0条)

保存