缓冲流的作用:
如果不用缓冲流的话,程序是读一个数据,写一个数据。这样在数据量大的程序中非常影响效率。
缓冲流作用是把数据先写入缓冲区,等缓冲区满了,再把数据写到文件里。这样效率就大大提高了
缓冲流:
字节缓冲流:BufferedInputStream bui=new BufferedInputStream(new InputStream());
BufferedOnputStream;
字符缓冲流 BufferedReader ,BufferedWriter;
关于各种流的操作规律:
之所以要弄清楚这个规律是因为对象太多,开发时不知道用哪个对象合适。因此只需要明确以下四点:
1,明确源和目的:
源:InputStream(字节流) Reader(字符流)
目的:OutStream(字节流) Writer(字符流)2,明确数据是否是纯文本数据
例如1:若是纯文本数据:源 Reader
源:是 Reader 目的是 Writer
否InputStream
目的 是 Writer 设备硬盘:File
否 OutStream 就有 FileReader in=new FileReader("路径");
到这里就可以明确是否用哪个体系了 FileWriter out=new FileWriter("路径");
3,明确具体的设备
需要高效功能(缓冲流):
源。键盘:System.in 硬盘:file 内存: 数组 网络:Socket流 BufferedReader bufi= new BufferedReader(FileReader("路径"));
目的。控制台:System.out 硬盘:File 内存:数组 网络:Socket流 BufferedWriter bufw= new BufferedWriter(FileWriter("路径"));
4,是否需要其它额外功能:
是否需要高效(缓冲区):buffer
例二:读取键盘录入(字节)信息,并写入到一个文件中。需要将字节流转换成字符流,还需要高效的功能
1,明确源和目的:
源:InputStream(字节流) Reader(字符流)
目的:OutStream(字节流) Writer(字符流)
2,明确数据是否是纯文本数据
源:是 Reader
目的 是 Writer
3,明确具体的设备
源:键盘 System.in
目:硬盘 File
InputStream in=System.in;
FileWriter out=new FileWriter("路径");
4,是否需要其它额外功能:
需要,将字节转换成字符
InputStreamReader in=new InputStreamReader(System.in);
FileWriter out=new FileWriter("路径");
需要高效的缓冲区: BufferedReader bufi=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw=new BufferedWriter(new FileWriter("路径"));