程序员java学习记录

javaIO流---转换流与缓冲流

2020-05-06  本文已影响0人  一花一世界yu

一、重点知识

抽取方法的快捷键 alt+shift+m

fileread和filewriter是转换流的子类

write是可以直接写出字符串的,或者写出字符串得一部分

转换流的父类是read 和 writer

关闭流只关闭外层流就可以了,外层流调用close会自动调用内层流的close

转换流一般在网络编程中使用,因为网络编程中获得的都是字节流,所以需要转换流

String类型数据在创建时也可以指定编码集

只有转换流可以指定编码集,别的流都不可以

缓冲流自带字节数组作为缓冲区容量为1024*8,数组在内存空间中,所以读取速度快

处理流和节点流并不一定有子父类关系

缓冲流的优势在于他的缓存空间自己管理,不需要我们去管理了

二、重点问题

如果用字符流读取不同编码得文件会乱码吗

会的,因为不用的编码对应着不同的规则,编码决定了解码的方式,开发工具有自己开始设置的字符集

三、课堂知识

3.1、FileReader

读取方法

read()-->int,读取一个字符,返回值就是读到的数据,末尾-1.

read(char[] cs)-->int,读取多个字符,存入cs字符数组中,返回值读取的个数。末尾-1

read(char[] cs,int off,int len)-->int,读取多个字符,末尾-1

读入的文件一定要存在,否则就会报FileNotFoundException。

3.2、FileWriter

1、构造方法:

FileWriter(String path);

FileWriter(File file);

FileWriter(String path,boolean append);

FileWriter(File file, boolean append);

2、写出数据

void write(int),将参数这个字符,写出去

void write(char[] cs),将整个cs数组的所有数据,全部写出

void write(char[] cs,int off,int len),将cs数组的一部分写出,从下标off开始,len个

void write(String s),直接将一个字符串写出

void write(String s, int off,int len),写出字符串的一部分

3.3、InputStreamReader

InputStreamReader:将一个字节的输入流转换为字符的输入流

解码:字节、字节数组  --->字符数组、字符串

3.4、OutputStreamWriter

OutputStreamWriter:将一个字符的输出流转换为字节的输出流

编码:字符数组、字符串 ---> 字节、字节数组

3.5缓冲流

1.缓冲流涉及到的类:

* BufferedInputStream

* BufferedOutputStream

* BufferedReader

* BufferedWriter

2.作用

缓存流:目的:高效。

原理:自带了一个数组作为缓冲区。读写发生在数组上。数组占内存,速度很快。

FileInputStream

read()-->int,访问磁盘,操作文件,读一个字节回来。。

BufferedInputStream

read()-->int,先找缓冲区,从缓冲区中读取一个字节回来。fill(),读取磁盘文件,填充缓冲区

byte[] bs ,作为缓冲区:1024*8。

上一篇下一篇

猜你喜欢

热点阅读