流(Stream)是指在计算机的输入输出操作中各部件之间的数据流动。按照数据的传输方向,流可分为输入流和输出流。
字节流与字符流的区别:
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组
字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好
如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点
所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列
字节输入流(InputStream)
int length = is.read(byte[] b)
is是输入流对象,将is所对应的输入流中数据读到字节数组b中,读到b中的字节长度赋值给length。
字节输入流
InputStream
- 用于从流中读数据
方法:read(); read(byte[]); read(byte[], int start, int end);
封装的库方法:从流bin中得到size个字节数据,该数据 被存储在size长的byte数组中返回,max为大于0的整数, 是调优参数,一般为1024的倍数,一般4位最好。
文件字节输入流
FileInputStream文件字节输入流继承InputStream 用于读取文件数据
BufferedInputStream 缓存字节输入流用于封装InputStream
T G M K B 进制1024. 1T = 1024G; 1G=1024M;
2 字节输出流---OutputStream
字节输出流OutputStream
输出数据
方法write(byte[] b);
文件字节输出流FileOutputStream ,继承OutputStream 用于对文件输出数据
缓存字节输出流BufferedOutStream
3 缓冲输入输出流--BufferedInputStream、BufferedOutputStream
目的:为了提高读写速度。
缓冲区满自动将缓冲区的内容写入磁盘中,如果缓冲区不满,内容在缓冲区里,不会写入磁盘。
flush()强制未满缓冲区内容写入磁盘。
close()也会在关闭前将缓冲区内容写入磁盘,注意缓冲流调用close()
字符流知识点
字符输入流
-
-
- (1)字符输入流Reader
- (2)文件字符输入流FileReader
- (3)缓存文件字符输入流BufferedReader
- 字符输出流
-
-
-
- (1)字符输出流Writter
- (2)文件字符输出流FileWritter
- (3)缓存文件字符输出流BufferedWritter
-
- Reader和Writer是所有字符流类的的抽象基类,用于简化对字符串的输入输出编程,即用于读写文本数据