html文件的下载,如何使用字节流,如何使用转换流

转换流的作用就是将我们的字节流转换成字符流

html文件的下载,如何使用字节流,如何使用转换流

字节流是可以处理一切内容的,包括图片,音频,视频,也包括纯文本,在很多系统和框架的底层返回给我们的都是字节流(有时候我们使用字节流处理并不方便,这就是我们为什么要转换字符流的原因)

System.in,System.out都是字节流,因为我们键盘输入还是输出的都是字符串,所以我们可以对它进行转换。

在我们的底层,如果是纯文本的话就涉及到一个东西是字符集。将字节转成字符叫做解码(在解码的过程中就涉及到字符集的问题,如果工程的字符集跟源头(文件)的字符集不统一就会出现乱码),所以这个时候我们最好可以指定字符集

html文件的下载,如何使用字节流,如何使用转换流

从字节流到字符流的转换

html文件的下载,如何使用字节流,如何使用转换流

只要我们看见Reader都建议加一个BufferedReader

html文件的下载,如何使用字节流,如何使用转换流

将写入的字符编码为字节

讲一下什么使用字节流,什么时候使用字符流

其实底层都是字节,我们使用字符是为了处理一些文本和字符串提高性能字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点 所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列

字节流和字符流的使用:


Java IO流中提供了两种用于将字节流转换为字符流的转换流。其中InputStreamReader用于将字节输入流转换为字符输入流,其中OutputStreamWriter用于将字节输出流转换为字符输出流。使用转换流可以在一定程度上避免乱码,还可以指定输入输出所使用的字符集


html文件的下载,如何使用字节流,如何使用转换流

html文件的下载,如何使用字节流,如何使用转换流

讲一下缓存流和转换流的结合,看见Reader我们就可以使用缓存流提高性能

html文件的下载,如何使用字节流,如何使用转换流

使用转换流实现字节到字符的转换以及输入和输出

· 节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.

· 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。

讲一下什么是节点流

字符流和字节流就可以叫做节点流

html文件的下载,如何使用字节流,如何使用转换流

html文件的下载,如何使用字节流,如何使用转换流

html文件的下载,如何使用字节流,如何使用转换流

html文件的下载,如何使用字节流,如何使用转换流

html文件的下载,如何使用字节流,如何使用转换流

html文件的下载,如何使用字节流,如何使用转换流

出现乱码的原因有两种:

1.字节数不够出现乱码

2.字符集不统一出现乱码

html文件的下载,如何使用字节流,如何使用转换流

在java中文件的传输其实就是靠流来实现的,网络流也是属于字节流,所以我们先使用字节流

我觉得写的时候应该是全部都写出来才写的,具体debug才知道,我这里就不弄了

为什么读取的时候乱码,写入的时候不乱码

忽然一下子自己就懂了,总之写入的时候只要讲字符集设置的和源头的文件一致就可以了


分享到:


相關文章: