当当当当~~~~欢迎大家阅读,今天我们一起来学习IO流
一、IO流概述IO:输入、输出(Input/Output)
流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输。
二、IO流的分类 (一)按照数据的流向输入流:读数据
输出流:写数据
(二)按照数据类型分类(一般来说,我们说IO流的分类是按照数据类型来分的)
(1)字节流字节流抽象基类:
InputStream:这个抽象类是表示字节输入流的所有类的超类
OutputStream:这个抽象类是表示字节输出流的所有类超类
(2)字符流InputStreamReader:FileReader
OutputStreamWriter:FileWriter
三、字节流(一)字节输出流(字节流写数据) (1)字节流写数据的三种方式
(2)字节流写数据的两个小问题
(3)字节流写数据加异常处理操作(2.1)字节流写数据如何实现换行
使用换行符(不同的操作系统对换行符号识别是不一样的) ( window:rn, linux:n,mac:r)(2.2)字节流写数据如何实现追加写入public FileOutputStream(String name,boolean append)
创建文件输出流以指定的名称写入文件
如果第二个参数为true,则字节将写入文件的末尾而不是开头
(二)字节输入流(字节流读数据) (1)一次读一个字节数据 (2)一次读一个字节数组数据 (3)使用字节输入流读数据的步骤
(三)字节缓冲流 (1)BufferOutputStream:缓冲输出流创建字节输入流对象
调用字节输入流对象的读数据方法
释放资源
该类实现缓冲输出流。通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用。
(2)BufferedInputStream:缓冲输入流创建BufferedInputStream将创建一个内部缓冲数组。当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次有很多字节
四、字符流(一)为什么出现字符流
(1)由于字节流操作中文不是特别的方便,所以Java就提供字符流
(2)用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文。
(3)如何识别是中文呢?
汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数
(二)编码表 (1)概念按照某种规则,将字符存储到计算机中,称为编码。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。
(2)注意事项按照A编码存储,必须按照A编码解析,这样才能显示正确的文本符号。否则就会导致乱码现象
(3)字符集是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等, 计算机要准确的存储和识别各种字符集符号,就需要进行字符编码,一套字符集必然至少有一套字符编码。常见字符集有ASCII字符集、GBXXX字符集、Unicode字符集等
(三)字符流写数据的五种方式(四)字符流读数据的2种方式
(五)字符缓冲流 (1)BufferedWriter
将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途
(2)构造方法BufferedWriter( Writer out);
(3)BufferedReader从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,可以指定缓冲区大小,或者可以使用默认大小。默认值足够大,可用于大多数用途
(4)构造方法BufferedReader(Reader in)
(5)字符缓冲流特有功能void newline( ):写一个行分隔符,行分隔符字符串由系统属性定义
public String readLine( ):读一行文字,结果包含行的内容的字符串,不包括任何行终止字符,如果流的结尾已经到达,则为null
以上就是IO流中的内容啦,希望我的文章对你有所帮助,如果有错误的地方还望大家批评指正,谢谢大家阅读!



