结构图
定义
能被连续读取数据的数据源和能被连续写入数据的接收端就是流
字节流与字符流的区别
字符流 --读到一个或多个字节(中文两个字节,UTF-8码表中3个字节),先查表,再返回字符.只能处理字符数据,纯文本有心考虑使用字符流
字节流 --读到一个字节就返回一个字节,可以处理所有数据类型
体系
基本的功能就是读和写
1.字符流小结:
close() --资源的释放
FileReader除了自己的构造函数外没有特有的方法:
用于读取文本文件的流对象
用于关联文本文件
构造函数FileReader(String fileName) --在读取流对象初始化时,必须制定一个被读取的文件,如果文件不存在则会发生FileNotFoundException异常
Writer中常见的方法:
write() --将一个字符写入到流中
write(char[]) --将一个字符数组写入到流中
flush() --刷新流,将流中的数据刷新到目的地中,流还存在
close() --关闭资源,关闭前会先调用flush()
FileWriter除了自己的构造函数外没有特有的方法:
用于处理文本文件
没有默认的编码表
有临时缓冲
构造函数,在写入流对象初始化时必须要有一个存储数据的目的地
构造函数FileWriter(StringfileName)
在指定位置创建一个文件,如存在则覆盖
FileWriter(String fileName,Boolean append) --当传入类型值为true时,会在指定文件末尾处进行数据的读写
字符流的缓冲区:
缓冲区的出现提高了对流的操作效率
原理:其实就是讲数组进行封装
BufferedWriter --特有方法newLine(),跨平台的换行符
BufferedReader --特有方法readLine(),一次读一行,到行标记之前的字符数据作为字符串返回,读到末尾返回null
缓冲的存在是为了增强流的功能而存在,简历缓冲必须先有流.并将流作为参数传递给缓冲区的构造函数
readLine()方法原理:本质使用read()方法,每一次读到一个字符不进行具体操作,先进行临时存储,读到回车标记时,将临时容器中存储的数据一次性返回
2.字节流小节: InputStream(读) OutputStream(写) 可以操作任何数据类型,字符流使用char[],而字节流使用的是byte[]. 3.转换流小结:
特点:字节流和字符流之间的桥梁,该流对象可以对读取到的字节数据进行指定编码表的编码转换
用处:当字节和字符之间有转换动作的时候,流操作的数据需要进行编码表的指定时
对象:
--InputStreamReader:字节到字符的桥梁
--OutputStreamWriter:字符到字节的桥梁
说明:
--这两个对象是字符流体系中的成员,他们有转换的作用,而本身又是字符流,所以在new的时候需要传入字节流对象
--转换流中的read方法已经融入编码表
--操作文本文件的FileReader直接继承InputStreamReader就可以直接操作文本问价中的字符数据了
--FileReader操作文本文档时,使用默认编码表,如果需要指定编码表,必须使用转换流
构造函数:
--InputStreamReader(InputStream) 默认的编码表GBK
--InputStreamReader(InputStream,String charset) 可以通过charsetr参数指定编码
--OutputStreamWriter(OutputStream) 默认的编码表GBK
--OutputStreamWriter(OutputStream,String charset) 可以通过charsetr参数指定编码
流操作的基本规律
明确数据源(键盘System.in,硬盘,File开头的流对象,内存(数组))和数据目的(控制台System.out,硬盘,File开头的流对象,内存(数组))
--其实是为了明确是输出流还是输入流
明确操作数据是否是纯文本数据
更多内容访问 java进阶_高老四
网友评论