您的位置 首页 java

JavaIO 缓冲流和转换流

一、缓冲流

1.缓冲区 基本字节流没有缓冲区 基本字符流有缓冲区(8K)

2.对于基本字节流, Java 后来提供了字节流的缓冲流和字符流的缓冲流

3.缓冲流

java. io .BufferedInputStream 字节缓冲流(读)

java.io.BufferedOutputStream 字节缓冲流(写)

java.io.BufferedReader 字符缓冲流(读)

java.io.BufferedWriter 字符缓冲流(写)

二、BufferedOutputStream类

1.作用 把内存中的数据写入到硬盘的某个文件中(有缓冲区)

2. 构造方法

public BufferedOutputStream(OutputStream out) 默认大小是8k

public BufferedOutputStream(OutputStream out, int size)可以自己指定缓冲区大小,单位字节

3.功能方法

public void write(int b) 参数是ASCII表中的码值,不是普通数字

public void write( byte [] b)

public void flush()

代码举例:


三、BufferedInputStream类

1.作用 把硬盘中某个文件的数据读取到内存中(有缓冲区)

2.构造方法

public BufferedInputStream(InputStream in) 默认缓冲区是8k

public BufferedInputStream(InputStream out, int size)可以自己指定缓冲区大小,单位字节12

3.功能方法

public int read()

public int read(byte[] b)

public void close()

代码举例:


四、复制文件

在实际开发时,对于较大文件的复制,推荐使用缓冲流


五、BufferedWriter类

1.作用 把内存中的数据写入到硬盘的某个文件中(缓冲区的大小是可以自己设置的)

2.构造方法

public BufferedWriter(Writer out) 默认大小是8k

public BufferedWriter(Writer out, int sz)可以自己指定缓冲区大小,单位字节12

3.功能方法

public void write(char[] cbuf)

public void write(String str)

public void newLine() \r\n 特有方法,优势是跨平台

public void flush()

public void close()

代码举例:



六、BufferedReader类

1.作用 把硬盘中某个文件的数据读取到内存中(缓冲区的大小可以自己设置)

2.构造方法

public BufferedReader(Reader in) 默认大小是8k

public BufferedReader(Reader in, int sz)可以自己指定缓冲区大小,单位字节12

3.功能方法

public int read()

public int read(char[] cbuf)

public String readLine() 特有方法 碰到换行或回车即一行结束

public void close()

用法


七、转换流

1.所有文件最终都是以字节形式存储在硬盘上,但是用户在读写时需要的是字符,因此字符和字节之间需要互相转换。

字节到字符是读(输入流),字符到字节是写(输出流)。

2.转换时需要按照某种 字符编码 进行转换,常见的编码有:ISO-8859-1(西方字符) UTF-8 (国际通用标准) GBK(中国国家标准)

3.在UTF-8编码标准中,一个汉字占三个字节;在GBK编码标准中,一个汉字占两个字节(请使用Eclipse更改文件编码格式)

4.中文Win操作系统默认编码GBK,Java中的char和String在存储汉字时采用GBK编码

5.当文件的编码跟系统默认编码不一致时,就会出现中文乱码问题,就需要用到Java的转换流来解决

6.InputStreamReader 是字节流通向字符流的桥梁,起到转换作用(读)

OutputStreamWriter 是字符流通向字节流的桥梁,起到转换作用(写)

八、InputStreamReader类

1.作用 读取 输入流 把硬盘上某个文件的二进制字节数据转换为字符

2.构造方法

public InputStreamReader(InputStream in) 默认字符编码GBK

public InputStreamReader(InputStream in, String charsetName)可以自己指定编码(要跟文件编码一致)12

3.功能方法

public int read()

public int read(char[] cbuf)

代码举例:

九、OutputStreamWriter类

1.作用 写 输出流 把字符转换为字节存到硬盘上

2.构造方法

public OutputStreamWriter(OutputStream out) 默认字符编码GBK

public OutputStreamWriter(OutputStream out, String charsetName)可以自己指定编码(要跟文件编码一致)12

3.功能方法

public void write(int c)

public void write(char[] cbuf)

public void write(String str)

public void flush()

public void close()

代码举例

十、另一种解决中文乱码文件的方式

1.先打回原形

2.重新组合成字符串,可以设置编码

十一、基本流、缓冲流和转换流

用基本字节流读写文本文件,也需要在字节和字符之间转换,getBytes() new String()

用基本字符流读写文本文件,也需要在字节和字符之间转换,字符流的爸爸是转换流

十二、总结基本流、缓冲流和转换流的应用场景?

1.基本流 文件小 编码是gbk

2.缓冲流 文件大

3.转换流 编码跟系统不一致

文章来源:智云一二三科技

文章标题:JavaIO 缓冲流和转换流

文章地址:https://www.zhihuclub.com/181943.shtml

关于作者: 智云科技

热门文章

网站地图