1.IO缓冲流:
之前我们学习的都是原始流(FileInputStream字节输入流、FileOutputStream字节输出流、FIleReader字符输入流、FIleWriter字符输出流)其实我们可以知道对于这些其实性能都不是很好,要么太慢一个一个,要么就是创建buffer数组占内存,因此我们需要对其进行性能的提升!
1.1字节缓冲流
为什么缓冲就可以提高性能,下面我通过图进行详细的介绍!!!【这类学要注意就是缓冲输入输出流是没有能力进行输入输出的,就就好比是一个水龙头套子,他是依附于原始的字节输入输出流的!】
1.1.1字节缓冲输入流、字节缓冲输出流
package IoByteDemo;import java.io.*;public class Test06 {public static void main(String[] args) {try(//创建输入管道InputStream fileInputStream = new FileInputStream("src\\IoByteDemo\\img.png");//包装一个套子,缓冲输出流BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);//创建输出管道OutputStream fileOutputStream = new FileOutputStream("src\\IoByteDemo\\img3.png");//包装一个套子,缓冲输出流BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);) {//首先我们创建一个1kb的字节数组byte[] buffer = new byte[4];//然后进行循环int len;while ((len = bufferedInputStream.read(buffer)) != -1){bufferedOutputStream.write(buffer,0,len);}} catch (Exception e) {throw new RuntimeException(e);}}
}
1.1.2字符缓冲输入流和字符缓冲输出流
package IoCharDemo;import java.io.*;public class Test04 {public static void main(String[] args) {try (//创建字符输入流FileReader fileReader = new FileReader("src\\IoCharDemo\\note03.txt");//再创建缓冲字符输入流BufferedReader bufferedReader = new BufferedReader(fileReader);//创建字符输出流FileWriter fileWriter = new FileWriter("src\\IoCharDemo\\note04.txt");BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);){
// //对于缓冲输入流进行读行操作!
// while (bufferedReader.readLine() != null){
// System.out.println(bufferedReader.readLine());
// }//开始进行复制//创建一个1024数组char[] buffer = new char[1024];//设置长度int len;while ((len = bufferedReader.read(buffer)) != -1){bufferedWriter.write(buffer,0,len);}System.out.println("赋值完成");}catch (Exception e){System.out.println("异常!");}}
}
总结:(如何提高字节读写数据的性能)
1.使用缓冲输入输出流,提高效率!
2.在内存进行容量更大的数据进行存储new byte[1024*n]适可而止
3.上述两者结合起来效果更好!