File相关的API应用

  • java.io.File

  • File的每一个实例用于表示硬盘上的一个文件或目录

  • 使用File可以:

  • 1:访问其表示的文件或目录的属性信息(名字,大小,修改时间等等)

  • 2:操作文件或目录(创建,删除)

  • 3:访问一个目录中的所有子项

  • 但是不能访问文件数据

  • @author EP

  • 使用File创建一个新文件

  • @author EP

public class FileDemo {

	public static void main(String[] args) {
		/*
		 * 相对路径:“.”表示当前目录
		 */
		File file = new File("./demo.txt");
		//length方法返回一个long值,表示该文件的字节量
		long len = file.length();
		System.out.println(len+"字节");
		
		//获取文件名
		String name=file.getName();
		System.out.println("name:"+name);
		
		//是否可读或可写
		boolean cr=file.canRead();
		boolean cw=file.canWrite();
		System.out.println("是否可读:"+cr);
		System.out.println("是否可写:"+cw);
	}

}
 public class CreatNewFileDemo {

	public static void main(String[] args) throws IOException {
		//在当前目录下新建一个文件:test.txt
		File file = new File("./test.txt");
		/*
		 * boolean exists()
		 * 判断当前File表示的文件或目录是否已经存在
		 */
		if (!file.exists()) {
			file.createNewFile();
			System.out.println("文件已创建");
		}else {
			System.out.println("文件已存在");
		}
	}

}
  • 删除一个目录
  • @author EP
public class DeleteDirDemo {

	public static void main(String[] args) {
		//删除当前目录下的demo目录
		File dir = new File("./a");
		if (dir.exists()) {
			dir.delete(); //删的必须是空目录,否则不行
			System.out.println("目录已删除");
		}else {
			System.out.println("目录不存在");
		}
	}
}
  • 删除一个文件
  • @author EP
public class DeleteFileDemo {

	public static void main(String[] args) {
		//将当前目录下的test.txt文件删除
		File file = new File("./test.txt");
		if (file.exists()) {
			file.delete();
			System.out.println("文件已删除");
		}else {
			System.out.println("文件不存在");
		}

	}

}
  • 创建一个目录
  • @author EP
public class MkdirDemo {

	public static void main(String[] args) {
		//在当前目录下新建一个名为demo的目录
		File dir = new File("./demo");
		if (!dir.exists()) {
			dir.mkdir();
			System.out.println("目录已创建!");
		}else {
			System.out.println("目录已存在!");
		}

	}

}
  • 创建一个多级目录
  • @author EP
public class MkdirsDemo {

	public static void main(String[] args) {
		//在当前目录下新建a/b/c/d/e/f目录
		File dir = new File("./a/b/c/d/e");
		if (!dir.exists()) {
			dir.mkdirs(); //会连同将不存在的父目录一同创建出来
			System.out.println("目录已创建!");
		}else {
			System.out.println("目录已存在!");
		}

	}

}
  • 获取一个目录中的所有子项
  • @author EP
 public class ListFilesDemo {

	public static void main(String[] args) {
		//获取当前目录下的所有子项
		File dir = new File("./bin");
		/*
		 * boolean isFile()
		 * 判断当前File对象表示的是否是一个文件
		 * 
		 * boolean isDirectory();
		 * 判断当前File对象表示的是否是一个目录
		 */
		if (dir.isDirectory()) {
			File[]subs=dir.listFiles();
			System.out.println("当前目录中有"+subs.length+"个子项");
			for (int i = 0; i < subs.length; i++) {
				File sub = subs[i];
				System.out.println(sub.getName());
			}
		}

	}

}`
  • 重载的listFiles方法允许我们添加一个文件过滤器
  • 目的是在获取某个目录下的子项时可以进行筛选,仅将符合要求的子项获取回来。从自建类,到匿名类,到匿名类写法的优化,到lambda表达式的优化。
  • @author EP
public class ListFileDemo2 {

	public static void main(String[] args) {
		//获取当前目录下所有名字以“.”开头的子项
		File dir = new File(".");
		if (dir.isDirectory()) {
			/*
			 * File[]listFiles(FileFilter fileFilter) 传参内容必须是FileFilter类
			 * 获取可以通过给定过滤器accept(返回为true的)方法的所有子项
			 */
			
			//使用匿名内部类形式创建
//			FileFilter fileFilter = new FileFilter() {
//				
//				@Override
//				public boolean accept(File pathname) {
//					// TODO Auto-generated method stub
//					return pathname.getName().startsWith(".");
//				}
//			};
//			File[]subs=dir.listFiles(new FileFilter() {
//				
//				@Override
//				public boolean accept(File pathname) {
//					// TODO Auto-generated method stub
//					return pathname.getName().startsWith(".");
//				}
//			});
			
			/*
			 * 这里利用到了回调模式
			 * 当我们调用一个方法时,传入一个类,而这个方法在运行过程中会用到
			 * 我们传入的类中的方法做操作时,这个现象是回调模式
			 */
			
			File[]subs=dir.listFiles(
					(pathname)->pathname.getName().startsWith(".")
			);
			System.out.println("获取的子项个数:"+subs.length);
			for (int i = 0; i < subs.length; i++) {
				System.out.println(subs[i].getName());
			}
		}
		

	}

}

//class MyFilter implements FileFilter{
//	/**
//	 * 该方法的作用就是定义文件的过滤规则,只要参数传入的file符合要求
//	 * 则方法返回值应当为true,否则为false
//	 */
//	
//	
//	@Override
//	public boolean accept(File file) {
//		String name = file.getName();
//		return name.startsWith(".");
//	}
//	
//}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值