I/O
流的三种分类
流的方向 输入/输出
数据单位 字节/字符 字符流专用于处理文本 字节流用于处理一切数据
流的功能 节点/过滤 节点:真正传输数据 过滤流:为节点流增强功能
1.创建节点流
2.封装过滤流
3.读/写数据
4.关闭最外层的过滤流
字节流
InputStream/OutputStream 字节流的父类 抽象类
FileInputStream/FileOutputStream 节点流 读写文件
write(int a) 写一个字节
write(byte[] bs) 把bs中所有字节写出去
write(byte[] bs,int start,int length) 把bs数组中的一段写出去
read():读一个字节
read(byte[] bs):读满字节数组 返回值为实际读入的字节数
read(byte[] bs,int start,int length) 读满数组中的一段
DataInputStream/DataOutputStream 读写8种基本类型和String
BufferedInputStream/BufferedOutputStream 缓冲
flush() 清空缓冲区
PrintStream 输出过滤流 写8种基本类型和String 缓冲
ObjectInputStream/ObjectOutputStream 读写对象 对象序列化
只有实现了Serializable接口的对象才能序列化
用transient修饰的属性为临时属性,不参与序列化
字符流
字符的编解码
字符集(A-Z a-z 0-9)
ASCII 美国
ISO-8859-1 西欧
GB2312/GBK 简体中文
Big5 繁体中文
Unicode Java中char类型的默认编码方式 UTF-16 1char -- 2byte
UTF-8 全球统一
当编码方式和解码方式不统一时,会出现乱码问题
Reader/Writer 字符流的父类 抽象类
FileReader/FileWriter 文件字符流 节点流
InputStreamReader/OutputStreamWriter 桥转换 字节流-->字符流
可以指定编解码方式
BufferedReader/BufferedWriter 缓冲
PrintWriter 字符输出流 缓冲 取代BufferedWriter
File类 代表磁盘上的一个文件或者目录
createNewFile() 创建新文件
mkdir() 创建新目录
delete() 删除文件或者空目录
exists() 判断文件或者目录是否存在
getAbsolutePath() 获得文件的绝对路径
isDirectory()/isFile() 判断File对象代表的是不是目录/文件
listFiles() 列出目录中的内容 返回值:File[]