Java视频学习笔记-16-(File类和递归)

1. File类

文件和目录路径名的抽象表示形式
路径以盘符开始:绝对路径 c:\\a.txt
路径不以盘符开始:相对路径 a.txt

构造方法:

  • FIle(String pathname): 根据一个路径得到File对象
  • File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
  • File(File parent, String child):根据一个File对象和一个子文件/目录得到File对象

创建功能:

  • public boolean createNewFile():创建文件
  • public boolean mkdir():创建文件夹
  • public boolean mkdirs():创建文件夹,如果父文件夹不存在,就帮助创建(即创建多级文件夹)

注:如果创建文件或者文件夹忘了写盘符路径,就默认创建在项目路径下

删除功能:

  • public boolean delete()

注:Java中的删除不走回收站;要删除一个文件夹,该文件夹内不能包含文件或者文件夹

重命名功能:

  • public boolean renameTo(File dest)

如果路径名相同,就是重命名;如果路径名不同,就是改名并剪切

判断功能:

  • public boolean isDirectory():判断是否是目录
  • public boolean isFile():判断是否为文件
  • public boolean exists():判断是否存在

获取功能:

  • public String getAbsolutePath():获取绝对路径
  • public String getPath():获取相对路径
  • public String getName():获取名称
  • public String[] list():获取指定目录下的所有文件和文件夹的名称数组(包括隐藏文件)
  • public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组(即文件对象数组)

判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称

import java.io.File;

public class FileDemo {
	public static void main(String[] args) {
		//封装e判断目录
		File file = new File("e:\\");
		
		//获取该目录下所有文件或者文件夹的File数组
		File[] fileArray = file.listFiles();
		
		//遍历该File数组,得到每一个File对象,然后判断
		for(File f : fileArray) {
			//是否是文件
			if(f.isFile()) {
				//继续判断是否以.jpg结尾
				if(f.getName().endsWith(".jpg")) {
					System.out.println(f.getName());
				}
			}
		}
	}
}

文件过滤器的实现思想和代码:

  • public String[] list(FilenameFilter filter)
  • public File[] listFile(FilenameFilter filter)

文件过滤器优化

import java.io.File;
import java.io.FilenameFilter;

public class FileDemo {
	public static void main(String[] args) {
		//封装e判断目录
		File file = new File("e:\\");
		
		//获取该目录下所有文件或者文件夹的String数组
		String[] strArray = file.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				//该文件或者文件夹是否加到数组,取决于return
				return new File(dir,name).isFile() && name.endsWith(".jpg");
			}
		});
		
		//遍历
		for(String s : strArray) {
			System.out.println(s);
		}
	}
}

2. 递归

方法定义中调用方法自身的现象

递归注意事项:

  • 要有出口
  • 构造方法中不能有递归
  • 递归次数不能太多,否则会溢出

递归内存图解:

需求:递归把E:\Java目录下的所有java结尾的文件的绝对路径输出

import java.io.File;

public class FilePathDemo {
	public static void main(String[] args) {
		File srcFolder = new File("E:\\java");
		//递归功能实现
		getAllJavaFilePath(srcFolder);
		
	}

	private static void getAllJavaFilePath(File srcFolder) {
		File[] fileArray = srcFolder.listFiles();
		for(File file : fileArray) {
			if(file.isDirectory()) {
				getAllJavaFilePath(file);
			}else {
				if(file.getName().endsWith(".java")) {
					System.out.println(file.getAbsolutePath());
				}
			}
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值