字节缓冲流性能分析

分别使用四种字节缓冲流进行文件复制测试其速度

这里准备了一个较大的视频文件130MB的视频文件进行测试

import com.wukong.io.BufferedInputStreamDemo02;import java.io.*;public class BufferedInputStreamDemo01 {public static final String SRC_FILE ="E:\\project\\教学\\C1 认证\\Web基础第四讲、.mp4";public static final String DEST_FILE ="D:\\test\\abc\\cc";public static void main(String[] args) throws IOException {//copy1();//低级流一个一个字节复制速度太慢,禁止使用copy2();//低级的字节流按照一个一个的数组形式复制较慢   2.383scopy3();//高级缓冲字节流按照一个一个字节复制速度较慢   4.211scopy4();//高级缓冲字节流流按照一个一个数组复制速度极快 建议使用  0.443s}//使用低级的字节流文件按照一个一个字节的形式复制文件。public static void copy1(){long startTime = System.currentTimeMillis();try(InputStream is  = new FileInputStream(SRC_FILE);OutputStream os = new FileOutputStream(DEST_FILE+"01.mp4")){//定义一个整型变量存取字节int ch;while ((ch =is.read()) != -1){os.write(ch);}}catch (Exception e){e.printStackTrace();}long endTimer = System.currentTimeMillis();System.out.println("使用低级的字节流方式按照一个一个字节的形式复制文件耗时"+(endTimer-startTime)/1000.0+"s");}//使用低级的字节流文件按照一个一个字节数组的形式复制文件。public static void copy2(){long startTime = System.currentTimeMillis();try(InputStream is  = new FileInputStream(SRC_FILE);OutputStream os = new FileOutputStream(DEST_FILE+"02.mp4")){//定义一个字节数组存储字节byte[] buffer = new byte[1024];int len;while ((len =is.read(buffer)) != -1){os.write(buffer,0,len);}}catch (Exception e){e.printStackTrace();}long endTimer = System.currentTimeMillis();System.out.println("使用低级的字节流方式按照一个一个字节数组的形式复制文件耗时"+(endTimer-startTime)/1000.0+"s");}//使用高级的字节流文件按照一个一个字节的形式复制文件。public static void copy3() throws IOException {long startTime = System.currentTimeMillis();try(InputStream is  = new FileInputStream(SRC_FILE);BufferedInputStream bis = new BufferedInputStream(is);OutputStream os = new FileOutputStream(DEST_FILE+"03.mp4");BufferedOutputStream bos = new BufferedOutputStream(os);){//定义一个整型变量存取字节int ch;while ((ch =bis.read()) != -1){bos.write(ch);}}catch (Exception e){e.printStackTrace();}long endTimer = System.currentTimeMillis();System.out.println("使用高级缓冲字节流方式按照一个一个字节的形式复制文件耗时"+(endTimer-startTime)/1000.0+"s");}//使用高级的字节流文件按照一个一个字节的形式复制文件。public static void copy4() throws IOException {long startTime = System.currentTimeMillis();try(InputStream is  = new FileInputStream(SRC_FILE);BufferedInputStream bis = new BufferedInputStream(is);OutputStream os = new FileOutputStream(DEST_FILE+"04.mp4");BufferedOutputStream bos = new BufferedOutputStream(os);){//定义一个字节数组存储字节byte[] buffer = new byte[1024];int len;while ((len =bis.read(buffer)) != -1){bos.write(buffer,0,len);}}catch (Exception e){e.printStackTrace();}long endTimer = System.currentTimeMillis();System.out.println("使用高级缓冲字节流方式按照一个一个字节数组的形式复制文件耗时"+(endTimer-startTime)/1000.0+"s");}}

测试结果:

小结:

  • 使用高级缓冲字节流方式按照一个一个字节数组的形式复制文件较快,建议日常使用。

文档顺序恢复

请将下述文档恢复顺序:

五.亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。
六.臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
七.先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明,故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
九.愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏,臣不胜受恩感激。
十.今当远离,临表涕零,不知所言。
三.侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
四.将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰能,是以众议举宠为督。愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
一.先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
二.宫中府中,俱为一体,陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。
八.亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。

案例分析:

  1. 创建一个缓冲字符输入流对象包装字符输入流接通源文件。
  2. 定义一个List 集合用与读取每段文章
  3. 定义语法循环按照行读取每段文章,,存入到List集合中去。
  4. 对List 集合中的每个元素按照首字母字符排序
  5. 创建缓冲字符输出流管道通向目标文件
  6. 遍历List集合中的每个元素,通过缓冲字符输出管道写出到目标文件。
  7. 释放资源
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.*;
/*分析:1.创建一个缓冲字符输入流对象包装字符输入流接通源文件。2.定义一个List 集合用与读取每段文章3.定义语法循环按照行读取每段文章,,存入到List集合中去。4.对List 集合中的每个元素按照首字母字符排序5.创建缓冲字符输出流管道通向目标文件6.遍历List集合中的每个元素,通过缓冲字符输出管道写出到目标文件。7.释放资源*/
public class ExecDemo01 {public static void main(String[] args) {//try(//创建一个缓冲字符输入流对象包装字符输入流接通源文件。BufferedReader br = new BufferedReader(new FileReader("src\\com\\wukong\\iotwo\\csb1.txt"));//创建缓冲字符输出流管道通向目标文件BufferedWriter bw = new BufferedWriter(new FileWriter("src\\com\\wukong\\iotwo\\newcsb.txt"));){//定义一个List 集合用与读取每段文章List<String> datas = new ArrayList<String>();String line;while ((line = br.readLine())!=null){datas.add(line);}List<Character> sizes = new ArrayList<>();Collections.addAll(sizes,'零','一','二','三','四','五','六','七','八','九','十');//对List 集合中的每个元素按照首字母字符排序Collections.sort(datas, new Comparator<String>() {@Overridepublic int compare(String s1, String s2) {//s1//s2// indexOf 获取元素在List的集合中的索引return sizes.indexOf(s1.charAt(0))-sizes.indexOf(s2.charAt(0));}});System.out.println(datas);for (String data:datas) {bw.write(data);bw.newLine();}}catch (Exception e){e.printStackTrace();}}
}

测试结果:

Java练习题:字节缓冲流性能分析、 文档顺序恢复相关推荐

  1. 黑马JAVA P163 字节缓冲流的性能分析

    package com.itheima.d2_byte_buffer_time;import java.io.*;public class ByteBufferTimeDemo {private st ...

  2. [Java基础]字节缓冲流

    字节缓冲输出流: package InstreamPack;import java.io.BufferedOutputStream; import java.io.FileNotFoundExcept ...

  3. java 字节缓冲_Java字节缓冲流原理与用法详解

    本文实例讲述了Java字节缓冲流原理与用法.分享给大家供大家参考,具体如下: 一 介绍 BufferInputStresm和BufferOutputStream 这两个流类为IO提供了带缓冲区的操作, ...

  4. 字节缓冲流 BufferedOutputStream java

    字节缓冲流 BufferedOutputStream java 演示

  5. 字节缓冲流 BufferedInputStream java

    字节缓冲流 java 示例 使用默认的缓冲数据来读 使用自定义的缓冲数值来读

  6. Java入门学习第十七天——字节流读写文件、字节缓冲流拷贝文件

    字节流读写文件 字节流拷贝文件-按单个字节读写 FileInputStream:普通的字节输入流,用来读取数据的 构造方法: ​ public FileInputStream(String pathn ...

  7. Java字节缓冲流/字符流/IO流小结

    文章目录 字节缓冲流 字节缓冲流构造方法 字符流 为什么会出现字符流 编码表 字符串中的编码解码问题 字符流中的编码解码问题 字符流写数据的5种方式 字符流读数据的2种方式 字符缓冲流 字符缓冲流特有 ...

  8. Java IO流之缓冲流:字节缓冲流BufferedOutputStream BufferedInputStream、字符缓冲流BufferedWriter、BufferedReader

    文章目录 缓冲流 1.字节缓冲流 构造方法 2.字符缓冲流 构造方法 练习:文章段落排序 缓冲流 缓冲流在基础的字节流和字符流上做功能的增强,能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储 ...

  9. 2※、封装流(包装流派)、缓冲流【字节缓冲流、字符缓冲流】-->【字节缓冲流、字符缓冲流】 、字符集、转换流以及打印流

    封装流(包装流) ※缓冲流 [字节缓冲流.字符缓冲流] 缓冲流[字节流]文件复制以及BufferedOutputStream的源码查看 缓冲流[字符流] [读取操作.写出操作] 练习:文本排序:请将文 ...

最新文章

  1. Could not install packages due to an Environment Error: [Errno 13] Permission denied 解决方案
  2. Docker源码分析(一):Docker架构
  3. synology_用于在Synology NAS上测试Spring Boot Web应用程序的JUnit模拟文件
  4. 刚体运动中变换矩阵的逆
  5. ICCV 2021 | DeeperAction挑战赛三大赛道开启报名
  6. docker 安装mysql 实战文档_docker 安装mysql
  7. vue光标插入内容_vue项目中在可编辑div光标位置插入内容的实现代码
  8. 官方确认:新增一所“双一流”大学
  9. java md5加密解密_java MD5加密解密 | 学步园
  10. 构造activeMQ
  11. openstack上创建vm实例后,状态为ERROR问题解决
  12. 深度学习head、neck、backbone三个术语分别是指什么?
  13. 2021-2025年中国阿莫雷德行业市场供需与战略研究报告
  14. Word背景变成豆绿色怎么恢复?
  15. destoon php文件,Destoon 任意文件读取
  16. 跨月作废发票,红字冲红注意事项 如何整理上交发票
  17. 图解ArcGIS数据三维显示
  18. 【hadoop生态之Hive】Hive的数据类型【笔记+代码】
  19. 2022年全球与中国油性凝胶面膜市场现状研究
  20. 贵溪市网络营销信息源类别

热门文章

  1. 哈工大计组大作业-RISC处理器设计
  2. EAUML日拱一卒-微信小程序实战:位置闹铃 (13)-使用类优化程序结构
  3. python : pandas 画移动平均线
  4. 微信小程序流量主怎么开通,小程序流量主开通步骤
  5. Python王者荣耀皮肤批量下载
  6. 价值链价值流分析方法对成本控制的启示(zt)
  7. 无人超市和传统超市的这些区别 你都知道吗?
  8. Python——二进制16位加法器(采用手算二进制加法的过程实现)(tkinter实现)【2021-07-08】
  9. C语言 带参数宏定义中 # 和 ## 知识点总结、代码分析
  10. Matplotlib绘图-快速上手可视化工具