日期:2014-05-18  浏览次数:20702 次

用递归搜索磁盘的文件时,为什么D盘都可以搜索,C盘却不能
如题,写的一个搜索.txt的程序,搜索算法的函数形参是一个抽象地址和一个关键字,当把D:/传给算法是就能进入算法并开始搜索,但是C:/却没有办法进入算法,这是为什么,代码附上
import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Day1 {
private static List<String> list=new ArrayList<String>();
private static Day1 dayStart = new Day1();
public static void main(String[] args) {
File d = new File("c:/");// 测试一下,File()后面是路径,d是文件,d.getpath是路径
File f = new File(d.getPath());// f是一个路径名
String keyWords = "学习";
list = doSearch(f, keyWords);
//if (list != null) {
 for(String s : list){
 System.out.println(s);
 }
}
// doSearch(f , result);//方法
// for(int j=0;j<result.length;j++)
// System.out.println(result[j]);


public static List<String> doSearch(File apple, String key) {
if (apple == null)
return null;
File[] files = apple.listFiles();
String words = key;
/*
 * 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 数组files中放的是root目录中的所有文件的路径
 */
if (files == null)
return null;
// try{
for (File f1 : files) {
/*
 * 强for循环,遍历f所在磁盘的所有文件
 */
if (f1 == null)
return null;
if (f1.isDirectory())
doSearch(f1, words);
if (f1 != null && f1.getName().toUpperCase().endsWith(".TXT")) {
try {
//list = dayStart.compare(f1, words);
String path = dayStart.compare(f1,words);
if(path!=null&&!path.trim().equals(""))//""
list.add(path);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return list;
}

/*
 * catch(Exception e){ System.out.println(e.getMessage()); }
 */

public String compare(File g, String key) throws IOException {
// compare方法对得到的.txt文件进行相关匹配
//List<String> list = new ArrayList<String>();
FileReader fr = new FileReader(g);// 将文件字节流读入fr
BufferedReader waittocompare = new BufferedReader(fr);// 字符流waittocompare
String message=new String();
String s;
while ((s = waittocompare.readLine()) != null)// 放入字符串中