File类

1.1 什么是File类

获取File类有三种方式(constructor方式)

File(String pathName) 根据对应的·文件路径创建获取对应的File类对象,可以是文件,可以是文件夹
File(String parent,String child). 根据对应的父目录文件夹路径以及文件夹名或者子文件夹名,创建对应的File类对象
File(File parent,String child). 根据对应的父目录文件,File类对象以及子文件名或者子文件夹名

路径:
相对路径

. 当前工作目录
… 父目录/上级目录
正对于当前工作目录和其他文件或者文件夹之间的
最小路径
绝对路径
唯一的路径。

Windows操作系统 C D E F… 每一个盘符都是一 个根目录开始 D:/Windows/System32
Linux UNIX macOS 存在一个 / 目录文件 /user/liuxiaolei/appliction
路径有一个很重要的东西 路径分隔符
Windows 分隔符 默认是 \
Linux UNIX macOS 分隔符 默认是 /
Windows是支持Linux分隔符 / 没有任何问题

1.2 创建文件和文件夹

boolean createNewFile();
通过File类对象调用,创建对应File类对象中保存的路 径的普通文件。 创建成功返回true,创建失败返回false
返回false的原因:

  1. 路径不合法。
  2. 对应的文件夹没有写入权限。 rwxr-xr-x
  3. 对应当前的文件已经存在。

boolean mkdir();
通过File类对象调用,创建对应File类对象中保存路径 的文件夹创建成功返回true,创建失败返回false
返回false的原因

  1. 路径不合法。
  2. 对应的文件夹没有写入权限。
  3. 对应当前的文件夹已经存在。

boolean mkdirs();
通过File类对象创建其中保存的文件目录的所有对应文 件夹,包括中间路径,如果创建失败,返回false

boolean renameTo(File dest);
通过File类对象调用,转为目标File类对象dest 文件/文件夹移动,重命名

如:

		File file2 = new File(file, "2.txt");
		System.out.println(file2.createNewFile());
		
		File file3 = new File(file, "bbb"); 
		System.out.println(file3.mkdir());
		
		File file4 = new File("D:/aaa/bbb/c/d/e/f/g/h/i/h/j/k/l");
		System.out.println(file4.mkdirs());
		
1.3 删除文件或者文件夹

boolean delete();
通过File类对象调用,删除对应的文件或者文件夹 【
【要求】

  1. 删除的文件或者文件夹都是直接抹掉数据,不是放入回收站
  2. 无法删除非空文件夹,文件夹中存在其他内容无法整体删除。

void deleteOnExit();
程序退出时删除对应的文件或者文件夹 用于删除程序运行过程中,留下的日志文件,缓冲文件, 操作日志…

如:

		File file = new File("D:/aaa/1.txt");
		File file2 = new File("D:/aaa/2.txt");
		
		file2.deleteOnExit();
		
		boolean ret = file.delete();
		System.out.println(ret);
1.4文件属性判断

boolean isFile(); 判断是否是一个普通文件
boolean isDirctory(); 判断是否是一个文件夹
boolean isAbsolute(); 判断是否使用了绝对路径
boolean isHidden(); 判断是否是隐藏文件
boolean exists(); 判断文件是否存在

如:

public static void main(String[] args) {
		System.out.println(new File("D:/aaa/1.txt").isFile());
		System.out.println(new File("D:/aaa/1.txt").isDirectory());
		System.out.println(new File("D:/aaa/ccc").isFile());
		System.out.println(new File("D:/aaa/ccc").isDirectory());
		
		System.out.println("-------------------");
		// 如果文件或者文件夹是不存在的,isFile和isDirectory结果都是false
		System.out.println(new File("D:/aaa/20.txt").isFile());
		System.out.println(new File("D:/aaa/abc").isDirectory());
		
		System.out.println("-------------------");
		// 判断是否使用绝对路径和当前文件或者文件夹是否存在无关
		System.out.println(new File("D:/aaa/1.txt").isAbsolute());
		System.out.println(new File("D:/aaa/20.txt").isAbsolute());
		System.out.println(new File(".").isAbsolute());
		
		//判断是否隐藏
		System.out.println("-------------------");
		System.out.println(new File("D:/aaa/1.txt").isHidden());
		System.out.println(new File("D:/aaa/2.txt").isHidden());
		
		//判断文件是否存在
		System.out.println("-------------------");
		System.out.println(new File("D:/aaa/1.txt").exists());
		System.out.println(new File("D:/aaa/20.txt").exists());
	}
1.5 获取文件属性

String getPath(); 获取File类对象保存的路径
String getName(); 获取当前File类对象中保存的文件名或者文件夹名
String getParent(); 获取当前File类对象对应文件或者文件夹的父目录 路径
String getAbsolutePath(); 获取当File类对象对应文件或者文件夹的绝对路径
long lastModified() 获取文件的最后一次修改时间,返回值是一个时间类型。
long length(); 获取文件的大小,占用硬盘空间字节数。

public static void main(String[] args) {
		File file = new File("D:/aaa/1.txt");
		
		// file.lastModified 最后一次文件修改时间
		long lastModified = file.lastModified();
		System.out.println(lastModified);
		
		// 对于日期展示的处理方式
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		String format = simpleDateFormat.format(new Date(lastModified));
		System.out.println(format);
		
		System.out.println(file.length());
		System.out.println(new File("D:/aaa").length());
	}
1.6 列表方法

static File[] listRoots();
通过File类调用,有且针对于Windows操作系统有效,获 取当前电脑内所有根盘符对象,如果是Linux,UNIX,macOS 是无效的。
File[] listFiles();
通过File类对象调用,获取当前File类对象对应文件夹 下的所有子文件或者子文件夹的File类对象数组
String[] list();
通过File类对象调用,获取当前File类对象对应文件夹 下的所有子文件或者子文件夹的String类型文件名或者文件 夹名字数组

public static void main(String[] args) {
		File[] listRoots = File.listRoots();
		
		/*
		 * for (数据类型 变量名 : 数组/集合) {
		 * 
		 * }
		 */
		for (File file : listRoots) {
			System.out.println(file);
		}
		System.out.println("---------------------------------------------");
		
		File file = new File("D:\\Program Files\\Java\\jdk1.8.0_211");
		File[] listFiles = file.listFiles();
		for (File file2 : listFiles) {
			System.out.println(file2);
		}
		
		System.out.println("---------------------------------------------");
		String[] list = file.list();
		for (String string : list) {
			System.out.println(string);
		}
		
	}
1.7 FilenameFilter文件名过滤器

演示:

/*
 * FilenameFilter过滤器演示
 */
public class Demo {
	public static void main(String[] args) {
		File file = new File("D:\\aaa\\ddd");
		
		// 使用匿名内部类的匿名对象直接作为方法的参数
		File[] listFiles = file.listFiles(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				/*
				 * dir是当前操作的文件夹类对象
				 * name是当前文件夹下的子文件或者子文件夹名字
				 * 
				 * 获取对应的java文件
				 * 		1. 判断是不是普通文件
				 * 		2. 判断当前文件名是不是.java结尾
				 */

				return new File(dir, name).isFile()
						// endsWith字符串方法,判断当前字符串是不是已指定要求结尾
						&& name.endsWith(".java");
			}
		});
		
		// Lambda表达式 JDK1.8新特征 
		File[] listFile = file.listFiles((dir, name) -> 
			new File(dir, name).isFile() 
			&& name.endsWith(".java")
		);
		
		for (File file2 : listFile) {
			
			System.out.println(file2.getName());
		}
		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值