流
-
概念:内存与存储设备之间传输数据的通道
-
数据借助流进行传输
流的分类
-
按方向
-
输入流(input):将 存储设备 中的内容读入到 内存 中
-
输出流(output): 将 内存 中的内容写入到 存储设备 中
-
-
按单位
-
字节流:以字节为单位,可以读写所有数据
-
字符流:以字符为单位,只能读写文本数据
-
-
按功能
-
节点流:具有实际传输数据的读写功能
-
过滤流:在节点流的基础之上增强功能
-
字节流
字节流的父类(抽象类)
-
Input Stream:字节输入流
-
public int read (){}
-
public int read (byte[] b){}
-
public int read (byte[] b , int off , int len){}
-
-
OutputStream:字节输出流
-
public void write(int n){}
-
public void write(byte[] b){}
-
public void write (byte[] b ,int off , int len){}
-
文件字节流
-
FileInputStream:
-
public int read (byte[] b)//从流中读取多个字节,将读到的内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1
-
-
FileOutputStream
-
public void write(byte[] b)//一次写多个字节,将b数组中所有字节写入到输出流
-
案例,使用文件输入流和文件输出流实现文件内容复制
文件缓冲流
-
缓冲流:BufferedOutputStream/BufferedIntputStream
-
提高IO效率,减少访问磁盘的次数
-
数据存储在缓冲区中,flush是将缓冲区的内容写入到文件中,也可以直接close
-
对象流
-
对象流:ObjectOutputStream/Object InputStream
-
增强了缓冲区功能
-
增强了读写8种基本数据类型和字符串功能
-
增强了读写功能
-
readObject() 从流中读取一个对象
-
writeObject(Object obj)向流中写入一个对象
-
-
使用流传输对象的过程称为序列化和反序列化
-
序列化的类必须实现Serializable接口
-
序列化类中对象属性也要实现Serializable接口
-
序列化版本 ID(serialVersionUID),保证序列化的类和反序列化的类是同一个类
-
使用transient(瞬间的)修饰属性,这个属性就不能被序列化
-
静态属性也不能被序列化
-
序列化多个对象,可以借助集合实现
-
-
对象流序列化对象
-
对象反序列化
内存流
-
ByteArrrayInputStream:内存输入流
-
ByteArrrayOutputStream:内存输出流
字符编码
-
文件后缀名的作用:1.表示文件的类型 2.决定使用什么软件打开文件
-
修改后缀名不会改变文件内容
-
ISO-8859-1收录除ASCII之外,还包西欧,希腊,泰语,阿拉伯语,对应的文字符 1个字节
-
UTF-8 : 针对Unicode码表的可变长度字符编码 1、2、3个字节
-
GBK 简体中文 扩充 1、2个字节
-
编码方式和解码方式不一致时,会出现乱码
字符流
-
字符流的父类(抽象类)
-
Reader:字符输入流
-
public int read(){}
-
public int read (char[] c){}
-
public int read (char[] b, int off ,int len){}
-
-
Writer:字符输入流
-
public void write (int n){}
-
public void write (String str){}
-
public void write (char [] c){}
-
-
文件字符流
使用字节流可以复制任何文件
-
File Reader:(文件字符输入流,从硬盘中读到内存)
-
public int read (char [] c)//从流中读取多个字符,将读到的内容存入c数组,返回实际读到的字符数,如果达到文件的尾部,则返回-1
-
-
File Writer(文件字符输出流,从内存中写到硬盘)
-
public void write(String str)//一次写多个字符,将b数组中所有字符,写入输出流
-
-
文件字符流实现文件内容复制
字符缓冲流
缓冲流:BufferedReader/BufferedWriter()默认8K
-
高效读写
-
支持输入换行符
-
可以一次写一行,读一行
-
字符缓冲输入流读取文件
-
字符输出缓冲流向文件写入内容
打印流
-
PrintWriter(数据原样打印)
-
封装print()/println()方法,支持写入后换行
-
支持数据原样打印
-
System.setout():重定向标准输出流
-
转换流
-
桥转换流:Input Stream Reader / Output StreamWriter
-
可以将字节流转换为字符流
-
可以设置字符的编码方法
-
File类
递归遍历文件夹和递归删除文件夹
Properties:属性集合
-
特点
-
存储属性名和属性值
-
属性名和属性值都是字符串类型
-
没有泛型
-
和流有关
-
RandomAccessFile
-
RandomAcessFile即可以读取文件内容,也可以向文件中写入内容
-
和其他输入流/输出流不同的是,程序可以直接跳到文件的任意位置来读写文件
-
读写模式
-
r:只读
-
rw:读写
-
-
作用
-
快速定位数据,支持并发读写
-
方便的获取二进制文件
-
多线程同时下载文件
总结
-
流的概念
-
内存与存储设备之间传输数据的通道
-
-
流的分类
-
输入流 (InputStream),输出流(OutputStream)
-
字节流(FileInputStream/FileOutputStream)
-
字符流(FileReader/File Writer)
-
节点流 ,过滤流
-
-
序列化和反序列化
-
将对象通过流写入到文件,或将对象通过流读取到内存,必须实现Serializable接口
-
-
File对象
-
代表物理盘符中的一个文件或者文件夹
-
ObjectInputStream 字节流,读八种基本类型,读对象,缓冲
ObjectOutputStream 字节流,写八种基本类型,写对象,缓冲
BufferInputStream 字节流,缓冲
BufferedOutputStream 字节流,缓冲
DataInputStream 字节流,读八种基本类型
DataOutputStream 字节流,写八种基本类型
PrintWriter 字符流,写八种基本类型,字符串并换行,缓冲功能,写对象
PrintStream 字节流,写八种基本类型,字符串并换行,缓冲功能,写对象
BufferedReader 字符流,缓冲,读入一行文本
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91738 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!