java递归:查询e盘下所有文件夹及其子文件夹里名为s的文件并打印,s为从控制台输入的需要查询的文件名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java递归:查询e盘下所有文件夹及其子文件夹里名为s的文件并打印,s为从控制台输入的需要查询的文件名相关的知识,希望对你有一定的参考价值。
参考技术A public static void main(String[] args) throws ExceptionSystem.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);// 递归
大体上是这样的。 参考技术B import java.io.File;
import java.util.ArrayList;
public class Test2
/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub
// while (true)
String s = "D:\\vms\\zhu\\New folder";
File f = new File(s);
//// System.out.println(f.isDirectory());
// File[] file = f.listFiles();
// for (int i = 0; i < file.length; i++)
// System.out.println(file[i]);
// // 如果是目录;进入目录
// if (file[i].isDirectory())
// s = s + file[i].getName();
// File fi = new File(s);
// File[] files = fi.listFiles();
// for(int j=0; j<files.length; j++)
// System.out.println(files[j]);
//
//
//
//
String st = ".txt";
ArrayList<String> arr = new ArrayList<String>();
listFiles(f, st, arr);
ArrayList<String> array = sort(arr);
for(int i=0; i<array.size(); i++)
System.out.println(array.get(i));
public boolean matchCondition(File f)
return true;
///
public static void listFiles(File f, String st, ArrayList<String> arr)
//list all files, loop
File[] files = f.listFiles();
for (File file:files)
if(file == null )
continue;
else if(file.isFile())
//if file, do something
String s = file.getName();
if(s.substring(0, 1).equalsIgnoreCase("z") && s.substring(s.length()-st.length(), s.length()).equals(st))
// System.out.println(file.getPath());
arr.add(file.getPath());
else if (file.isDirectory())
//if dir, do something
listFiles(file, st, arr);
//if no nothing
public static ArrayList<String> sort(ArrayList<String> a)
int flag, count;
count = a.size();
for(int i=0; i<count-1; i++)
for(int j=0; j<count-1; j++)
flag = a.get(j).compareToIgnoreCase(a.get(j+1));
if(flag >= 0)
a.set(j, a.get(j+1));
a.set(j+1, a.get(j));
count = count - 1;
return a;
以上是关于java递归:查询e盘下所有文件夹及其子文件夹里名为s的文件并打印,s为从控制台输入的需要查询的文件名的主要内容,如果未能解决你的问题,请参考以下文章