一、说明:
根据题目所提供的目录用递归方法,判断此目录下的内容是文件还是目录,如果是文件则获取它的后缀名,与指定的后缀名相比较,如果相同则打印出该文件的绝对路径,反之则不需打印;如果目录下的内容是目录,则采用了递归方法调用方法本身,重复上面的步骤,判断子目录下的是文件还是目录;用递归方式一直重复上述步骤最终就能获取到相应的文件绝对路径。
二、例题
判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
package IOliu;
import java.io.File;
import java.io.IOException;
public class File_1 {
public static void main(String[] args) throws IOException {
File file=new File("E:\\DELL\\后端关卡8-16\\关卡14_文件IO流\\01_File类&递归思想");
File file1 = new File(file,"xiaoming.txt");
File file2 = new File(file,"总结知识");
//创建文件
System.out.println(file1.createNewFile());
//创建目录
System.out.println(file2.mkdir());
System.out.println(file1.getAbsolutePath());
System.out.println(file2.getAbsolutePath());
//删除文件
System.out.println(file1.delete());
//删除目录
System.out.println(file2.delete());
File file4 = new File(file,"zhang.jpg");
//file4.createNewFile();
isfile(file);
}
public static void isfile(File file){
File[] list = file.listFiles();
for (File s:list){
if (s.isFile()){
int in=s.getName().lastIndexOf(".");
int in1=s.getName().length();
//遍历输出所有的文件绝对路径
System.out.println(s);
if (s.getName().substring(in,in1).equals(".jpg")){
System.out.println("---------");
//遍历输出所有的后缀名为.jpg文件绝对路径
System.out.println(s.getAbsolutePath());
//System.out.println(s.delete());
System.out.println("--------");
}
}else {
isfile(s);
}
}
}
}
运行结果:
给定目录为:
E:\\DELL\\后端关卡8-16\\关卡14_文件IO流\\01_File类&递归思想
创建一个与a.txt文件同目录下的另外一个文件b.txt
//第四题
public static void t4(File file) throws IOException {
File[] list = file.listFiles();
for (File s:list){
if (s.isFile()){
//int in=s.getAbsolutePath().lastIndexOf("a");
int in1=s.getName().length();
//System.out.println(s);
int in=s.getAbsolutePath().length();
if (s.getName().equals("a.txt")){
String s1=s.getAbsolutePath().substring(0,in-in1);
File file1 = new File(s1,"b.txt");
file1.createNewFile();
System.out.println("创建成功!");
}
}else {
t4(s);
}
}