缓冲流—— BufferedInputStream、BufferedOutputStream
2019-03-24 16:17
225 查看
一、介绍缓冲流BufferedInputStream、BufferedOutputStream
在创建 BufferedInputStream 时,会创建一个8K的内部缓冲区数组byte[] buf,存储数据的内部缓冲区数组。必要时可用另一个不同大小的数组替换它。
两个构造方法:
-
BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
-
BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个长度为 size 的内部缓冲区数组并将其存储在 buf 中。
使用示例:
public class BufferedOutputStream { //缓冲流读操作 public static void read() throws IOException { String path = "C:\\Users\\50579\\Desktop\\tt.txt"; //文件操作流(操作字节) FileInputStream fileInputStream = new FileInputStream(path); //转换流:将字节转换为字符 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); //缓冲流↓↓ //字符缓冲流 BufferedReader bufferedReader = new BufferedReader(inputStreamReader);//构造函数1:默认大小的缓冲区 //BufferedReader bufferedReader1 = new BufferedReader(inputStreamReader, 1);//构造函数2:可以自定义大小的缓冲区 //字节缓冲流 //BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); //特有方法:可以一行一行的读取 int line; while ((line = bufferedReader.read())!= -1){ System.out.println(line); } bufferedReader.close(); } //缓冲流写操作 public static void write() throws IOException { String path = "C:\\Users\\50579\\Desktop\\tt.txt"; BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path))); Random random = new Random(); for (int i = 0; i < 100; i++) { int i1 = random.nextInt(5) + 5; StringBuffer stringBuffer = new StringBuffer(); for (int j = 0; j < i1; j++) { int i2 = random.nextInt(1000) + 1; stringBuffer.append(i2); stringBuffer.append(","); } writer.write(stringBuffer.toString()); writer.newLine(); } writer.close(); } public static void main(String[] args) throws IOException { write(); read(); } }
二、给定一个较大的文件,判断InputStream和BufferedInputStream的读取时间大小?
- BufferedInputStream的读取时间
public class Judge { public static void main(String[] args) throws IOException { String path = "E:\\javaSource\\src-insight2\\mysrc.si4project.si4project\\mysrc.si4project.sip_xsb"; FileInputStream fileInputStream = new FileInputStream(path); //转换流:将字节转换为字符 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); //字符缓冲流 BufferedReader bufferedReader = new BufferedReader(inputStreamReader); long startTime=System.currentTimeMillis(); System.out.println("开始读"); int line; while ((line = bufferedReader.read())!= -1){ System.out.println(line); } long endTime=System.currentTimeMillis(); System.out.println("BufferedReader读取时间: "+(endTime - startTime)+"ms"); bufferedReader.close(); } }
2. InputStream的读取时间
public class Judge { public static void main(String[] args) throws IOException { String path = "E:\\javaSource\\src-insight2\\mysrc.si4project.si4project\\mysrc.si4project.sip_xsb"; FileInputStream fileInputStream = new FileInputStream(path); long startTime=System.currentTimeMillis(); System.out.println("开始读"); int line; while ((line = fileInputStream.read())!= -1){ System.out.println(line); } long endTime=System.currentTimeMillis(); System.out.println("BufferedReader读取时间: "+(endTime - startTime)+"ms"); fileInputStream.close(); } }
总结出:
BufferedInputStream耗时短,效率高,因为它在用户区有个8k(8192)的缓存区,会批量从内核的缓冲区一次拿8K, read每次从用户区的缓存区读取数据,所以比较高效
相关文章推荐
- IO流-BufferedInputStream输入缓冲流
- 系统学习 Java IO (九)----缓冲流 BufferedInputStream/BufferedOutputStream
- JAVA提高篇(10)-缓冲流-BufferedInputStream、BufferedOutputStream
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
- 两对缓冲流 BufferedInputStream BufferedOutputStream 和 BufferedReader BufferedWriter
- 缓冲流bufferedReader 与inputStream
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
- JAVA学习笔记(二十九) - 缓冲流 BufferedInputStream &BufferedOutputStream
- 总是会搞混的File,FileInputStream,FileReader,InputStreamReader,BufferedReader 类
- java核心技术之IO流(四)BufferedInputStream和BufferedOutputStream
- Java基础-FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream实现文件拷贝
- BufferedInputStream和BufferedOutputStream用法 解决乱码
- android studio 显示网页源码 inputstream bufferedreader stringbuffer
- File,FileInputStream,FileReader,InputStreamReader,BufferedReader 的使用和区别
- BufferedInputStream和BufferedOutputStream
- BufferedInputStream和BufferedInputStream
- java基础 字符缓冲流[BufferedReader 和 BufferedWriter]
- BufferedInputStream与BufferedOutputStream
- InputStream 、 InputStreamReader 、 BufferedReader区别