一、文件
1、概念
1、文件就是保存数据的地方,比如:文字、视频
2、文件流
输入和输出是针对内存而言的。
2、常用的文件操作
1)创建文件
练习:
2)获取文件信息
3)目录操作
二、IO流原理和分类
1、概述
一个字符对应几个字节?跟编码有关系
字符流的效率比字节流高
但是字节流的好处在于操作二进制文件,可以保证操作是无损的操作
字符流操作文本文件比较好,字节流操作二进制文件比较好
InputStream、OutputStream都是抽象类,不能直接实例化
Reader、Writer也是抽象类,不能直接实例化
在使用的时候创建它们的实现子类才可以
流和文件的关系:
2、IO常用类
关系图:
1)FileInputStream
2)FileOutputStream
3)FileInputStream和FileOutputStream综合应用------文件拷贝
4)文件字符流说明(FileReader和FileWriter)
5)FileReader
6)FileWriter
细节:
7)节点流和处理流
节点流是对特定的数据源进行操作的
数据源就是存放数据的地方
处理流也叫包装流
writer也是类似:
bufferedWriter中含有writer的属性,就意味着bufferedWriter可以封装任意一个writer的子类,这个时候在操作数据源既可以是对文件,也可以是对数组进行操作,这样就相当于包装流bufferedWriter的功能更加强大了
节点流和处理流比较
模拟修饰器的设计模式:
8)bufferedReader
关闭时,只需要关闭外层流即可,因为实际上工作的时节点流
8)bufferedWriter
9)buffered拷贝
readLine读取一行内容,但是没有换行
10)bufferedInputStream
11)bufferedOutputStream
12)字节处理流拷贝文件
13)对象处理流ObjectOutputStream和ObjectInputStream
为了:能够将 基本数据类型或者对象 进行序列化和反序列化
如果要让对象支持序列化,必须要实现两个接口中的一个
- serializable标记接口,没有方法
- externalizable
objectOutputStream类
objectInputStream类
提出dog类:
对象处理流使用细节
14)标准输入输出流
System.in代表的是一个流,标准输入流
System.out代表的是一个流,标准输出流
15)转化流 InputStreamReader和 OutputStreamWriter
如果文件的编码不是utf-8会出现问题:
关键:没有指定文件的读取编码方式
1)InputStreamReader
InputStreamReader是属于字符流的,可以实现从字节流转化为字符流
2)OutputStreamWriter
字节流-》字符流
当处理纯文本数据的时候,使用字符流的效率更高
16)打印流 PrintStream和PrintWriter
打印流只有输出流,没有输入流
(1)PrintStream 字节流
可以把信息打印到显示器、文件等等
(2)PrintWriter 字符流
三、properties类
1、引入
传统的方案:
如果我们要求得到指定的ip值
2、properties读文件
3、properties修改文件
properties父类是Hashtable,底层就是Hashtable 核心方法
四、练习
1、
2、
3、