- 👋 Hi, I’m @货又星
- 👀 I’m interested in …
- 🌱 I’m currently learning …
- 💞️ I’m looking to collaborate on …
- 📫 How to reach me …
学习目标
利用Java语言与递归实现简单的文件查找
实现基础
java.io.File
有关File类的描述可以在Oracle的Java网站http://docs.oracle.com/javase/7/docs/api/java/io/File.html上获取,为了使用这个类,必须使用import java.io.File。File类中相关的方法描述如下:
·File(String pathname)——接受一个路径名的构造器,它会创建一个File对象,对应于这个路径名表示的文件或目录。
·String getAbsolutePath()——返回File对象的路径名,例如C:\Papers\TermPaper.odt。
·String getName()——返回File对象的名字,例如TermPaper.odt。
·boolean isDirectory()——测试File对象是否是一个目录。
·File[]listFiles()——如果File对象是一个目录,那么该方法会返回一个File对象数组,对应于这个目录中所有的项。
学习内容
编写一个静态递归方法String searchForFile(File currentFolder,String filename),其中第一参数应该是一个File对象,用于指定搜索名字为filename的文件时所使用的根路径。这个方法应该递归地在所有子文件夹中搜索文件,并返回第一个匹配项的完整路径名。例如,如果currentFolder被设置成了C:\,文件名是"foo.txt",那么它可能会返回"C:\Code\Stuff\foo.txt",如果这是该文件的有效路径的话。如果没有任何文件具有与currentFolder匹配的名字,那么该方法应该返回一个空字符串""。
学习产出
程序主要分为两部分。
一:searchForFile方法用于在给定的文件夹中查找指定的文件名。如果找到了匹配的文件,它将返回该文件的绝对路径;否则,它将返回一个空格字符串。
二:main方法,创建类的实例,调用searchForFile方法来搜索指定目录currentFolder下名为filename的文件。最后,将搜索结果打印到控制台。
step1:定义
首先导入java.io.File类,然后定义一个名为Problem2的公共类。在Problem2类中,定义一个无参构造函数和一个名为searchForFile的方法。该方法接受两个参数:一个File对象表示当前文件夹获或文件夹,另一个是字符串表示要查找的文件名。
step2:searchForFile方法
在searchForFile方法中,首先检查当前File对象是否为目录。如果不是目录,则比较文件的名称是否与要查找的文件名相同。如果相同,则返回文件的绝对路径;否则返回一个空字符串。
如果当前文件夹是一个目录,则获取该目录下的所有文件和子目录,并将其存储在一个File数组中。然后遍历这个数组,对每个元素递归调用searchForFile方法。如果在递归调用中找到了匹配的文件,则返回该文件的绝对路径。如果遍历完整个数组都没有找到匹配的文件,则返回一个空字符串。
step3:main方法
创建类的实例,调用searchForFile方法来搜索指定目录currentFolder下名为filename的文件。最后,将搜索结果打印到控制台。
源码
import java.io.File;
public class Problem2 {
Problem2() {}
public String searchForFile(File currentFolder,String filename)
{
if(!currentFolder.isDirectory())
{
if(currentFolder.getName().equals(filename))
return currentFolder.getAbsolutePath();
else return " ";
}
else
{
File[] files=currentFolder.listFiles();
int len;
if (files != null) {
len = files.length;
}
else len=0;
for(int i=0;i<len;i++)
{
String str=searchForFile(files[i],filename);
if(!str.equals(" ")) return str;
}
return " ";
}
}
public static void main(String[] args)
{
Problem2 problem2=new Problem2();
String result=problem2.searchForFile(new File("D:/college/"),"test.dat");
System.out.println(result);
}
}