Java11—File类与IO

本文详细介绍了Java11中File类的使用,包括构造函数、获取信息、文件及文件夹的创建和删除,以及子文件过滤。同时,文章深入探讨了字节流与字符流的概念,如OutputStream、InputStream、BufferedInputStream、BufferedOutputStream等,并讲解了字节流与编码的关系。通过实例展示了文件和文件夹的复制操作,强调了缓冲流在提高IO效率中的作用。
摘要由CSDN通过智能技术生成
在Java当中 将计算机中所有的文件和目录都用File这个类描述
IO input output 如何对文件进行数据的写入和读取
java.io这个包下面
File类构造函数与分隔符
//File类会自动甄别文件系统路径Linux/Windows
//关联了一个相对路径的文件
File f1 = new File("haha.txt");
//特殊:对于当前的IDEA/Eclipse而言 相对路径获取的文件都在项目根目录下
System.out.println(f1.exists()); //项目根目录下的haha.txt文件
File f4 = new File("C:\\Users\\HENG\\Desktop\\YD_Java\\src\\Chapter11\\haha.txt");
System.out.println(f4.exists()); //和此类同目录的haha.txt文件
//关联了一个绝对路径的文件
File f2 = new File("C:\\Users\\HENG\\haha.txt");
//如果此路径是Linux的文件路径 / 根目录
File f3 = new File("/haha/xixi/lala");
File f5 = new File("C:\\Users\\HENG\\Desktop\\YD_Java\\src\\Chapter11","haha.txt");
System.out.println(f5.exists());
File parent = new File("C:\\Users\\HENG\\Desktop\\YD_Java\\src\\Chapter11");
File f6 = new File(parent,"haha.txt");
System.out.println(f6.exists());
//因为Linux/Unix/Windows/MAC这些操作系统中 路径分割符是不统一的
//当我们不确定程序所运行的系统环境 如果需要用到文件路径 路径分割符采用File自带的separator
String parentPath = "C:\\Users\\HENG\\Desktop\\YD_Java\\src\\Chapter11";
File f7 = new File(parentPath + File.separator + "haha.txt");
System.out.println(f7.exists());
File类的获取相关
File f = new File("C:\\Users\\HENG\\Desktop\\YD_Java\\第11章笔记.txt");
//打印文件的绝对路径
System.out.println(f.getAbsolutePath());
//文件对象构造函数中写的是啥 这边打印的就是啥
System.out.println(f.getPath());
//获取文件名 - 获取相对路径
System.out.println(f.getName());
//获取文件大小 单位字节 b
System.out.println(f.length());
//最后一次修改时间
System.out.println();
String time = DateFormat.
        getDateTimeInstance(DateFormat.LONG,DateFormat.LONG).
        format(new Date(f.lastModified()));
System.out.println(time);
System.out.println(f.getParent());
文件和文件夹的创建
//文件的创建 目录的创建
File f1 = new File("file01.txt");
//File f1 = new File("E:\\file01.txt");
//E盘不存在 则报错 IOException
//文件不存在 则创建 返回 true
System.out.println(f1.createNewFile());
//文件已存在 则不创建 返回 false
System.out.println(f1.createNewFile());
//合理的创建方式 先判断 再考虑是否创建
if (!f1.exists()) {
   
	f1.createNewFile();
	}
//一般而言 目录是没有后缀名 文件也可以没有后缀名
	File f2 = new File("haha");
	if (!f2.exists()) {
   
		f2.createNewFile();
	}
	//File dirc1 = new File("haha");
	//上面已经有一个同名没后缀名的文件 从系统角度而言 属于重名内容 不允许创建
	File dirc1 = new File("lala");
	//创建一个目录
	System.out.println(dirc1.mkdir());
	File dirc2 = new File("xixi.txt");
	System.out.println(dirc2.mkdir());
	//上边xixi.txt目录已经创建 则同名的xixi.txt文件不允许							System.out.println(dirc2.createNewFile());
	//总而言之,对于系统而言 无论是文件还是目录 只要重名都不能再创建新的了
	//尽量创建文件时加上后缀名
	//尽量创建目录时不要有非法字符存在(后缀名)
	File dirc3 = new File("abc/def/ghi");
	//mkdir一次只能创建一个一级目录
	System.out.println(dirc3.mkdir());
	//若果创建多级目录用mkdirs
	System.out.println(dirc3.mkdirs());
文件和文件夹的删除
File f1 = new File("xixi.txt");
//删除一个目录 不走回收站
f1.delete();
//该目录中有多个子文件和其他子目录 不能直接删除
File f2 = new File("abc");
System.out.println(f2.delete());
//如果非得要删除的话 只能先将其内部的所有元素删除之后 再删除该目录
File f3 = new File("haha.txt");
f3.delete();
//总而言之 删除文件 用delete
//delete只能删除单一的文件或单一的目录
//如果所删除的目录有内容 则不能删除 只能手动
子文件与文件过滤器
        File f1 = new File("xixi.txt");
        //删除一个目录 不走回收站
        f1.delete();
        //该目录中有多个子文件和其他子目录 不能直接删除
        File f2 = new File("abc");
        System.out.println(f2.delete());
        //如果非得要删除的话 只能先将其内部的所有元素删除之后 再删除该目录

        File f3 = new File("haha.txt");
        f3.delete();
        //总而言之 删除文件 用delete
        //delete只能删除单一的文件或单一的目录
        //如果所删除的目录有内容 则不能删除 只能手动

11.5 子文件与文件过滤器
public static void main(String[] args) {
   
	File dir = new File("C:\\Users\\HENG\\Desktop\\YD_Java");
	//查看该目录下所有的文件(包含隐藏文件)
	//list()返回的是该目录下第一层级的所有文件和目录的名字的字符串数组
	MyFileNameFilter filter = new MyFileNameFilter();
	String[] fileNames = dir.list(filter);//只能传关于名字的过滤
	if (fileNames != null) {
   
		for (String name : fileNames) {
   
			System.out.println(name);
		}
	}

	MyFileFilter filter2 = new MyFileFilter();
	//listFiles()返回的是该目录下第一层级的所有文件和目录的File对象的一维数组
	File[] files = dir.listFiles(filter2);//关于文件名 文件属性的过滤都行
		if (files != null) {
   
            for (File file : files) {
   
                	System.out.println(file.getAbsolutePath(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值