1.一次读取多个字节
public int read(byte[] b)
参数: 读取的字节存放到数组 数据类似于缓冲区
返回值:表示读取的有效的字节个数
2.代码
package day18;
import java.io.FileInputStream;
import java.io.IOException;
public class Test04 {
public static void main(String[] args) throws IOException {
byte[] b = new byte[2];
FileInputStream fis = new FileInputStream("E:\\admin01\\d.txt");
//调用读的方法
int leng = fis.read(b);
System.out.println(new String(b));
System.out.println(leng);
int leng1 = fis.read(b);
System.out.println(new String(b));
System.out.println(leng1);
int leng2 = fis.read(b);
System.out.println(new String(b));
System.out.println(leng2);
int leng3 = fis.read(b);
System.out.println(new String(b));
System.out.println(leng3);
int leng4 = fis.read(b);
System.out.println(new String(b));
System.out.println(leng4);
//关闭资源
fis.close();
}
}
结果图
最后读取字节数组,不够时往回读,但返回的是准确的数字,当读完所有再读时返回-1;
一、字符缓冲流
1.BufferedInputStream 输入缓冲区流 读取 加快读取速度(高效流)
2.BufferedOutputStream 输出缓冲区流 写入 加快写入速度(高效流)
3.注意点:
BufferedInputStream 与BufferedOutputStream 没有读写的功能 只是对InputStream 与
OutputStream
的封装 提供了一个缓冲区的数组 加快读写操作的速度
4.构造方法
5.高效流 高效的原因
BufferedInputStream 高效流的底层提供了一个缓冲的数组 这个数组的长度是8127个字节
使用高效流进行读取的时候 一次读取8127的字节的数据放入到缓冲区的数组,再进行读取数据的时候
就从缓冲区中获取数据(内存中) 如果8127字节的数据全部读取完毕之后 又从新读取8127个字节
填入到
缓冲区中 可以避免反复与磁盘来进行交互 从内存中获取数据 数据会更加快 所以高效
BufferedOutputStream 高效的原因与上面的一样
理解:即再内存与磁盘交互之间 在内存中开辟一个专门读取的空间,这个空间与磁盘交互更快,这个空间一次读取8127个字节,内存往这个空间读取数据,数据不够时这个空间再去磁盘读取
package day18;
import java.io.*;
public class Test03 {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream