IO流--Java.IO包、对文件的操作

一、Java.IO包

1定义

i:input输入 o:output输出
java.io包也是Java内置的包,其中包含一系列对文件和目录的属性进行操作,对文件进行读写操作的类。

2 作用

程序中将数据输出到程序以外或在程序以外将数据输入到程序内。也就是程序与外界的数据交流。可以输出到控制台,文件,或网络上的其他计算机上。

3 引言

程序结束之后,数据从内存中释放。数据在内存中只能临时存储。想要对数据进行持久化存储操作,此时就需要IO技术来完成内存和持久化设备(硬盘、U盘)之间数据的输入输出。IO技术最终是依赖于操作系统,像记事本、word以及Java等等自身是没有输入输出技术的,实现原理是这些软件去调用操作系统的输入输出技术。数据持久化到硬盘中,那么体现形式就是----文件。
在这里插入图片描述
硬盘:存储数据资料的地方。
内存:暂时存储CPU需要的数据。
电脑开机后,用户要运行QQ聊天软件。CPU会先找到内存索取QQ数据,接着内存找到硬盘索取QQ全部数据,内存收到硬盘发来的QQ数据,就会传输给CPU,最后用户看到QQ登录界面。内存是CPU和硬盘的数据桥梁。

二、对文件的操作

1 类 File

定义:文件和目录(目录即文件夹)路径名的抽象表示形式。
文件里面有大小、名字、时间等许多信息,java就将文件封装成对象,通过File对象来操作文件。
在这里插入图片描述
作用:File类的对象不但可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录;File类对象不能直接对文件进行读写操作。
文件属性信息:
在这里插入图片描述

2 获取文件信息常用方法

public static void main(String[] args) {
		//创建File对象
		File file = new File("D:\\Eclipse\\workspace\\JavaSe_IO\\day20.txt");
		//获取绝对路径
		System.out.println(file.getAbsoluteFile());
		//获取相对路径(构造方法内部写的路径)
		System.out.println(file.getPath());
		//获取文件大小(java中大小要么length要么size)
		long size = file.length();
		System.out.println(size);
		//获取文件名称
		String fileName = file.getName();
		System.out.println(fileName);	//结果:day20.txt
		//获取文件上一次修改时间,结果是一个毫秒值。
		long time = file.lastModified();
		Date date = new Date(time);
		String lastModified = DateFormat.getDateTimeInstance().format(date);
		System.out.println(lastModified);
	}

3 文件操作方法

public class File_02 {
	/*
	 * 操作文件
	 */
	public static void main(String[] args) throws IOException {
		File file = new File("D:" + File.separator + "coco.txt");
		/*
		 * 创建文件:createNewFile() (1)如果文件不存在,方法返回结果为true。
		 * (2)如果文件已存在,则不能够再创建,方法返回false。 (3)如果路径名错误或者磁盘空间不足,抛出IOException。
		 * 因此此方法需要对IO异常进行捕获或者声明处理。
		 */
		boolean b1 = file.createNewFile();
		System.out.println(b1);
		// 删除文件:delete()。(java中删除要么delete要么remove)
		boolean b2 = file.delete();
		System.out.println(b2);
		// 判断文件是否存在:exists();
		boolean b3 = file.exists();
		System.out.println(b3);
		// 判断是否是一个文件isFile(),要先判断文件是否存在。
		boolean b4 = file.isFile();
		System.out.println(b4);
		// 重命名,移动(文件名重改,内容依旧存在)renameTo();
		// (1)定义新文件名
		File dest = new File("D:" + File.separator + "amo.txt");
		// (2)传入新文件名对象
		boolean b5 = file.renameTo(dest);
		System.out.println(b5);
	}
}

4 目录操作方法

public class File_03 {
/*
 * 操作目录
 */
	public static void main(String[] args) {
		//1.创建目录
		File file = new File("D:\\a\\b\\c\\d");//	将d封装成File对象
	/*	(1)创建文件夹对象mkdir(),如果文件夹对象上级目录存在,则无法创建返回false。
	 *	(2)创建多层文件夹mkdirs()。
	 */
		boolean b1 = file.mkdirs();
		System.out.println(b1);
		//2.判断是否是文件夹
		/*	判断是否是文件夹还是文件?
		 * (1)首先要判断文件或文件夹是否存在。不存在判断都为false。
		 * (2)判断文件isFile();判断文件夹isDirectory()。
		 */
		boolean b3 = file.isDirectory();
		System.out.println(b3);
		//3.删除文件夹对象,该文件夹为空才可删除。
				boolean b2 = file.delete();
				System.out.println(b2);
	}
}

5 示例代码

需求:获取目录的下一级内容

public class file_04 {
	/*	
	 * 获取的下一级内容存放在数组中。
	 * 不需要放在集合中,因为不需要进行增删元素操作。
	 */
	public static void main(String[] args) {
		//	1 创建file对象,将父目录封装成对象
		File dir = new File("D:\\Eclipse\\workspace");
		//	2 方法一:获取当前目录下的所有文件和目录的文件名,返回String数组
		String[] names = dir.list();
		for(String name : names){
			System.out.println(name);
		}	
		/*	2	方法二:获取当前目录下的所有文件和目录的绝对路径,返回File数组。
			返回的是一个File类的引用,具有此类的所有属性和方法*/
		File [] files = dir.listFiles();
		for(File file : files){
			System.out.println(file.getName());
			System.out.println(file.lastModified());
		}
		//	这两种方法的File对象必须是一个目录且必须已存在,否则返回空指针异常。
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值