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

 我来答
hesper0
推荐于2016-07-19 · TA获得超过512个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:234万
展开全部
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);// 递归
}
}
大体上是这样的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
公子朱
2012-03-14
知道答主
回答量:19
采纳率:0%
帮助的人:5.7万
展开全部
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;
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式