【java之路】7.文件 & IO流

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


文件 & IO流

所在包:java.io包

文件

​ 把相关的记录放在一起,形成的数据的集合,存储于磁盘中。

Java访问文件

​ 通过File类来实现访问,File类可能时文件,也可能是目录。

​ 访问位于磁盘上的文件需要有访问路径,访问路径的表示方法分两种,如下:

 D:\\tools\\帮助文档\\JDK帮助文档   	//绝对路径  

 D:/tools/帮助文档/JDK帮助文档  		//相对路径

生成文件

​ File类的使用

构造方法(常用)
	File(String pathname);			//根据指定路径建立文件对象
	File(String parent, String child); //根据父目录和子目录组合创建文件对象
实例方法(常用)
	mkdir();		//建立一个目录
	mkdirs();		//建立多个目录
	
	createNewFile();	//创建文件
	
	delete();		//删除文件
	
	exists();		//测试此抽象路径名表示的文件或目录是否存在。 
	
	isDirectory();	//是否是目录
	isFile(); 		//是否是文件 

	getName(); 		//查看文件名
	getParent();	//返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
	getAbsolutePath();	//返回此抽象路径名的绝对路径名形式。
	getPath();			//将此抽象路径名转换为一个路径名字符串。
		
	length();		//返回由此抽象路径名表示的文件的长度。
	
	lastModified();		//返回此抽象路径名表示的文件最后一次被修改的时间。

	list();			//返回一个字符串数组,这些字符串为目标抽象路径名目录中的文件和目录。

IO流

​ 英文是stream,是一个通道,里面是一连串流动的字符,按照FIFO(first in , first out)的规则进行流动。

图源自 @ pecuyu 大佬

流的分类

  1. 按流向

    a. 输入流
    b. 输出流

  2. 按数据单位

    a. 字节流: 适用于通用情况
    b. 字符流:适用于处理单个字符或字符串的情况.

  3. 按特殊用途

    手工输入流

    对象流

    打印流

    ……

常用字节流

FileInputStream / FileOutputStream

​ 适用于通用情况。

构造方法:

//输入
new FileInputStream(String pathname);  
new FileInputStream(String parent, String child);   

//输出
new FileOutputStream(String pathname);
new FileOutputStream(String pathname, boolean append); 	
DataInputStream / DataOutputStream

​ 适用于处理指定类型的数据 。

构造方法:

new  DatInputStream(InputStream in); 			//输入
new  DatOutputStream(OutputStream out); 		//输出
BufferedInputStream / BufferedOutputStream

​ 适用于需要提高访问效率,此种流带缓冲区数组功能,数据先放入缓冲区,然后从缓冲区中读取。

构造方法:

new BufferedInputStream(InputStream in);  
new BufferedOutputStream(OutputStream out);  
ObjectInputStream / ObjectOutputStream

​ 对象流适用于项目中流对象的场景。

​ 注意要点:

  1. 流中只能流字节,所以需要把对象转为字节。

    ​ 序列化:对象——>字节

    ​ 反序列化:字节——>对象

  2. 一个类中的属性如果也是一个类,则此属性代表的类也必须序列化。

  3. 当类中属性有transient关键字修饰时,此属性不参与流的传输。

  4. 当类中属性是static关键字修饰属性时,此属性在流中正常传输,值受最终所给的值来决定。

  5. 在要使用对象流的类中,手工加上serialVersionUID的编号,防止在序列化时出现序列化版本不一致——流中的序列化版本和本地类中的序列化版本不一致。

字符流

  1. 字符流里面流的char类型数据和String类型的数据。

  2. 当项目中要求流动的是文本数据时,首选字符流。

键盘输入相关

PrintStream
System.out.println("……");		 //输出结果在控制台显示。

PrintStream(File file);			//创建具有指定文件且不带自动行刷新的新打印流。
PrintStream(OutputStream out, boolean autoFlush);		//创建新的打印流,带自动行刷新。
手工输入流

System.in “标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。

Properties

Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

​ 详见API手册。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值