java——缓冲流的学习

2按流的数据单位不同分为:字节流和字符流
,字符流:Reader、Writer
字符流是以操作一个字符为单元进行读写任务,字符流处理的单元为2个字节的Unicode字符
字节流是以操作一个字节为单元进行读写任务*字节流处理单元为1个字节
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;
UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点。
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以

字节流:InputStream、OutputStream

Io流是java里面很重要的一章,学习流是很有必要的。
字节流分为输出流(outputStream)和输入流(InputStream),这个为两个父类,
outputStream类底下又分为很多的子类,主要讲的是学习的两个子类,
一、FileInputStream和FileOutStrea
该子类主要针对文件的读取,输入流负责对文件进行读取,输出流可以对服务器端文件进行输出,让客户可以下载文件。该流为输出数据。
public void Upload() throws IOException {
String path1=this.getClass().getClassLoader().getResource("").getPath();
String path2=path1+"_1model/套餐资费说明.txt";
System.out.println(path2);
File file=new File(path2); //获取到根目录下面的文件
FileInputStream fileInputStream=new FileInputStream(file);
InputStreamReader reader=new InputStreamReader(fileInputStream);
BufferedReader StringBuilder=new BufferedReader (reader);
String buff="";
while((null!=(buff=StringBuilder.readLine()))){
System.out.println(buff);
};
fileInputStream.close();
StringBuilder.close();
}

通过流对文件的读取,
在这里插入图片描述
这个里面我是用FileInputStream对文用件进行读取,中间我还需要转化一次,通过这一句InputStreamReader reader=new InputStreamReader(fileInputStream)转化成字符流;然后存储到字符流里面,我的文件里面都是汉字,这个时候将字节流转化字符流等于多了一个步骤,但是结果是可以执行的,没有差别。
当我们可以使用FileReader 对文字的读取,FileReader 是两个字节Unicode字符。这个时候就无需转化,可以直接读取。一般对中文读取字符流使用比较方便
将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader**(如 FileReader 和 InputStreamReader**)

CharArrayReader:此类实现一个可用作字符输入流的字符缓冲区。
BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。(字符流缓冲区)

FilterReader:用于读取已过滤的字符流的抽象类。抽象类 FilterReader 自身提供了一些将所有请求传递给所包含的流的默认方法。FilterReader 的子类应重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。

InputStreamReader:将字节流转化为字符流

InputStream父类中有以下子类:

在这里插入图片描述
类 StringBufferInputStream:已过时。 此类未能正确地将字符转换为字节,不推荐使用
ObjectInputStream :ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。只有支持 java.io.Serializable 或 java.io.Externalizable 接口的对象才能从流读取。

什么叫序列化:计算机里面的语言都是无结构,将信息转化出来的信息叫序列化

反序列化:将正常语言转化为计算机语言
下面是序列化:案例如下:
在这里插入图片描述
太多了,下一章接着学。晚上自己看收获很大
2019.8.12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值