FileAPI

File

  • 文件就是持久保持数据的存储单元,任何数据如果需要持久保存,就需要存储到文件中
  • java.io.File 用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录。
  • File API的方法可以实现:创建文件/文件夹,查看文件的属性,删除文件/文件夹,文件/文件夹改名等
  • 关于路径的表示,可以用“/” “\”或是Files.separator

File内的方法

  • mkdir();创建文件夹
  • mkdirs();创建多个文件夹
  • createNewFile();创建文件
  • delete()删除文件或者文件夹
    注意:删除的若是文件夹,必须是空文件夹才能删除
  • **注意:上述的方法都是有布尔型返回值的,成功返回true,否则返回false,即可以放在if语句中作为条件,当作为条件执行过后,其创建或删除等操作也已经执行过了
  • 当创建文件时需要抛出异常:throws IOExpression,所属包: java.io.IOExpression
  • isDirectory()判断是否是文件夹,当是的时候返回true,否则返回false
  • isFile()判断是否是文件,当是的时候返回true,否则返回false
  • exists()判断文件(夹)是否已存在
  • listFiles()文件夹的方法,列出文件夹内所有的文件和文件夹,返回值是一个File[]数组类型,元素是该文件夹里的内容

语法:

	public static void main(String[] args) throws IOExpression{//需要抛出异常
		File file1 = new File("/home/soft01/demo");//在/home/soft01(已存在)目录下,新建demo(没有同名文件夹)文件夹
		file1.mkdir();//新建文件夹,返回值是个boolean类型,若创建成功,返回true,否则false。
		if(file1.exists()){
			file1.delete();//删除文件夹
		}
		file1 = new File("/home/soft01/demo/a/b/c/d");
		file1.isDirectory();//file1是文件夹,返回true
		file1.isFile();//返回false
		file1.mkdirs();//会依次创建demo,a,b,c,d
		File file2 = new File("/home/soft01/demo/test.txt");//在这个目录下新建test.txt文件
		file2.createNewFile();
	}

小案例:删除一个文件夹,其内部有若干层嵌套的文件夹,每个文件夹都有文件

public class Test {
	public static void main(String[] args) {
		File dir = new File("./demo");
		delete(dir);
	}
	
	public static void delete(File file){
		if(file.isDirectory()){
			//先将该目录中所有子项清空
			File[] subs = file.listFiles();
			for(int i=0;i<subs.length;i++){
				File sub = subs[i];
				/*
				 * 递归调用
				 * 在当前方法内部继续调用本方法的
				 * 现象称为递归调用.
				 * 递归尽量避免使用,层级越多开销
				 * 越大,执行效率较慢.
				 * 若需要使用递归,必须注意两点:
				 * 1:尽量避免层级太多
				 * 2:递归调用必须被一个分支控制
				 *   不能必定调用,否则是死循环.
				 */
				delete(sub);	
			}						
		}
		file.delete();
	}
}

FileFilter(java.io.FileFilter)

文件过滤

public static void main(String[] args) {
		File dir = new File(".");
		/*
		 * 文件过滤器,用于定义一个File的过滤规则
		 */
		FileFilter filter = new FileFilter(){
			/*
			 * 当参数file符合过滤要求时,当前accept方法
			 * 应当返回true
			 */
			public boolean accept(File file) {
				String name = file.getName();
				System.out.println("正在过滤:"+name);
				return name.startsWith(".");
			}	
		};
		/*
		 * 该方法会将目录中所有子项获取到,并顺序调用
		 * 给定的过滤器的accept方法,然后将所有返回
		 * 值为true的子项保留并最终返回.
		 */
		File[] subs = dir.listFiles(filter);
		System.out.println(subs.length);
		for(int i=0;i<subs.length;i++){
			File sub = subs[i];
			System.out.println(sub.getName());
		}
	}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值