Java之I/O流总结-持续更新

2017-07-10  本文已影响0人  篮球女神馨颖

结构图

定义

能被连续读取数据的数据源和能被连续写入数据的接收端就是流

字节流与字符流的区别

字符流 --读到一个或多个字节(中文两个字节,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进阶_高老四

上一篇 下一篇

猜你喜欢

热点阅读