Java学习笔记之IO流

文件

1)定义路径

2)创建文件类File file = new File("filepath");

3)文件类常用方法:file.exists判断文件是否存在

                                file.mkdir创建目录

                                file.createNewFile创建新文件

流的分类

1)按操作数据单位不同分为:字符流(8bit)二进制文件、字符流文本文件。

2)按数据的流向不同可分为:输入流、输出流。

3)按流的角色不同可分为:节点流、处理流(包装流)。

字节流

字节输入流FileInputStream

FileInputStream是一个以字节为单位向内存中读入数据的流。

FileOutputStream是一个以字节为单位像文件中写入数据的流。FileOutputStream构造器的参数有地址和是否覆盖输入选项。

字符流

FileReader是以字符为单位向内存中读入数据的流。

FileWriter是以字符为单位向文件中写入数据的流。

注意FileWriter使用后必须关闭流(close)或刷新(flush),否则写入不到指定文件。

节点流

节点流是对一种特定数据源进行读写的流。如FileReader、Fi了Writer、FileInputStream、FileOutputStream都是对文件进行读写的流,还有对数组进行读写的流,对管道进行读写的流,对字符串进行读写的流等等。每种节点流只能对自己对应数据类的的数据进行读写。

包装流

包装流也叫处理流,是把节点流包装起来,当你需要读写文件时初始化成文件读取流,当你需要读取数组时初始化成数组读取流。即在节点流的基础上提供更灵活强大的读写功能。

BufferedReader和BufferedWriter属于字符型处理流,按照字符来处理数据,关闭流时只需要关闭外层流。

//初始化一个BufferedReader处理流,需要读什么类型的数据在构造器中传入什么类型的节点流即可
BufferedReader bufferedreader = new BufferedReader(new FileReader(filepath));

BufferedReader提供的一些方法如下,其他处理流的方法查阅JDK;

BufferedInputStreamr和BufferedOutputStream属于字节型处理流,按照字符来处理数据,关闭流时只需要关闭外层流。

//初始化一个BufferedInputStream处理流,需要读什么类型的数据在构造器中传入什么类型的节点流即可
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(filepath));

对象流

对象流是能够同时读写数据和数据类型的流。从程序中保存值和数据类型成为序列化,将保存在文件中的数据重新恢复成某对象称为反序列化。

注意需要让某个对象支持序列化机制,则必须让其类是可序列化的,即该类必须实现Serializable接口

ObjectOutputStream 提供 序列化功能

ObjectInputStream 提供 反序列化功能1)读写顺序要一致

2)要求序列化或反序列化对象 ,需要 实现 Serializable

3)序列化的类中建议添加SerialVersionUID,为了提高版本的兼容性

4)序列化对象时,默认将里面所有属性都进行序列化,但除了static或transient修饰的成员

5)序列化对象时,要求里面属性的类型也需要实现序列化接口

6)序列化具备可继承性,也就是如果某类已经实现了序列化,则它的所有子类也已经默认实
现了序列化

标准输入输出流

System.in 标准输入,类型为InputStream,默认从键盘输入。

System.out 标准输出,类型为PrintStream,默认从显示器输出。

转换流

InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成(转换)Reader(字符流)

OutputStreamWriter:Writer的子类,实现将OutputStream(字节流)包装成Writer(字符流)

当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文问题,所以建议将字节流转换成字符流。

Properties

专门用于读取配置文件的集合类

配置文件一般格式为:键=值。不需要有空格,值不需要用引号引起来,默认为String类型。

常用方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值