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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java递归:查询e盘下所有文件夹及其子文件夹里名为s的文件并打印,s为从控制台输入的需要查询的文件名相关的知识,希望对你有一定的参考价值。

参考技术A 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);// 递归


大体上是这样的。
参考技术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为从控制台输入的需要查询的文件名的主要内容,如果未能解决你的问题,请参考以下文章

java如何查询文件夹内有多少个文件?

递归读取目录文件下的所有文件

java 访问文件夹及其子文件夹中的所有文件

java 递归实现删除或查询指定目录下的全部文件

存储过程递归查询

如何使用 Java 和 XmlSchema Core 解析 XSD 并读取所有复杂元素及其子元素