Java IO流之【缓冲流和文件流复制文件对比】
与文件流相比,缓冲流复制文件更快
代码:
package Homework;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
/**
* 1 )将"今年是反法西斯胜利70周年,举国欢庆,所以要放假啦" 字符串
* 使用文件字符输出流 写入到oldhappy.dt文件中,复写10000行,
* 要求换行 在文件的开头写入当前的时间 精确到毫秒在文件的结尾也写入当前的时间 精确到毫秒。
* @author Administrator
*
*/
public class Test1 {
public static void main(String[] args) {
copy1();
copy2();
}
//使用文件流复制文件
public static void copy1(){
FileOutputStream fos=null;
try {
//创建输入流,并创建要写入的文件oldhappy.dt
fos=new FileOutputStream(new File("oldhapy.dt"));
//获取写入前的当前时间
long l=System.currentTimeMillis();
//格式化时间
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String time=s.format(l);
//写入时间
fos.write((time+"\r\n").getBytes());
//写入要写的内容,并换行
// \r\n表示换行
for(int i=1;i<=10000;i++){
fos.write("今年是反法西斯胜利70周年,举国欢庆,所以要放假啦\r\n".getBytes());
fos.flush();
}
//获取写完后 时间
long l2=System.currentTimeMillis();
String time2=s.format(l2);
fos.write(time2.getBytes());
//复制文件的时间
System.out.println("使用文件流复制文件时间:"+(l2-l));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//使用缓冲流复制文件
public static void copy2(){
BufferedOutputStream bos=null;
try {
bos=new BufferedOutputStream(new FileOutputStream("newhapy.dt"));
long l=System.currentTimeMillis();
//格式化时间
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String time=s.format(l);
//写入时间
bos.write((time+"\r\n").getBytes());
//写入要写的内容,并换行
// \r\n表示换行
for(int i=1;i<=10000;i++){
bos.write("今年是反法西斯胜利70周年,举国欢庆,所以要放假啦\r\n".getBytes());
bos.flush();
}
//获取写完后 时间
long l2=System.currentTimeMillis();
String time2=s.format(l2);
bos.write(time2.getBytes());
//复制文件的时间
System.out.println("使用缓冲流复制文件时间:"+(l2-l));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(bos!=null){
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
运行结果比较:
Java IO流之【缓冲流和文件流复制文件对比】的更多相关文章
- 1.java.io包中定义了多个流类型来实现输入和输出功能,
1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G) A.输入流和输出流 B ...
- Java.io下的方法是对磁盘上的文件进行磁盘操作
File类(java.io.*)可表示一个文件,也有可能是一个目录(在JAVA中文件和目录都属于这个类中,而且区分不是非常的明显). Java.io下的方法是对磁盘上的文件进行磁盘操作,但是无法读取文 ...
- Java使用文件通道复制文件
两种文件通道复制文件方式的性能比较 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IO ...
- 使用文件流与使用缓冲流完成文件的复制操作性能对比,文件流 FileInputStream FileOutputStream 缓冲流: BufferedInputStream BufferedOutputStream
package seday06; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOExc ...
- Java IO学习笔记(四)打印流
1.只有输出流才有打印流:PrintWriter和PrintStream分别针对字符和字节,提供了重载的print,Println方法用于多种数据类型的输出.PrintWriter和PrintStre ...
- java io 学习笔记(三) 字符流读写
1.字符流读取 字符流读取的所有类都是从Reader这个超类继承的,都是用于读取字符的,这些类分别是InputSteamReader(从字符流读取).FileReader(继承与InputStream ...
- Java IO学习笔记(五)对象流
1.Object流:直接将Object写入或读出. 2.序列化:将Object直接转化成字节流写到硬盘或网络上. 3.如果想把一个对象转化成字节流,该对象的实体类必须得实现Serializable接口 ...
- Java IO学习笔记(三)转换流、数据流、字节数组流
转换流 1.转换流:将字节流转换成字符流,转换之后就可以一个字符一个字符的往程序写内容了,并且可以调用字符节点流的write(String s)方法,还可以在外面套用BufferedReader()和 ...
- Java中的字节流,字符流,字节缓冲区,字符缓冲区复制文件
一:创建方式 1.建立输入(读)对象,并绑定数据源 2.建立输出(写)对象,并绑定目的地 3.将读到的内容遍历出来,然后在通过字符或者字节写入 4.资源访问过后关闭,先创建的后关闭,后创建的先关闭 ...
- IO流----读取文件,复制文件,追加/插入文件
文件结构 读取文件 第一种方式 public class Test { public static void main(String[] args) throws IOException { // 最 ...
随机推荐
- 解决Json传输中文乱码问题
1.如果是通过URL传递:----需要编码两次 var searchText = this.searchText(); searchText = encodeURI(searchText); sear ...
- Java设计模式之(建造者模式)
建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式通常包括下面几个角色: 1. builder:抽象建造者,给出一个抽象接口,以规范产品对象的各个组 ...
- extjs4 前台导出grid数据 生成excel,数据量大后台无法接收到数据
最近做的一个web项目使用的是extsj4 框架,需要一个导出excel功能,通过extjs4 自带的导出方法实现.在前台生成excel的代码,form提交传递到后台输出.前台grid数据超过1000 ...
- VueJS 组件参数名命名方式和前台显示
camelCase(驼峰式) 和. kebab-case(短横线式) HTML 特性是不区分大小写的.所以,当使用的不是字符串模版,camelCased (驼峰式) 命名的 prop 需要转换为相对应 ...
- .net core CLI(创建VueJS||Angular结合的项目)
net core cli 是快速创建模板项目 安装CLI 参考: https://www.hanselman.com/blog/dotnetNewAngularAndDotnetNewReact.as ...
- ZJOI2017 Round#2 滚粗记
在杭州的火车站的KFC餐厅里,独自一人,闲来无事,便写写这篇博客.刚刚的一个礼拜,经历了余姚的省选和杭州的数学集训,感觉有些浪,学校里现在还在上新课,我已经落下一个礼拜的文化课了,回去估计补死:最重要 ...
- 蓝桥杯- 奇妙的数字-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- Unity 总裁 John Riccitiello 发话:VR足以匹敌互联网
在2017年Vision Summit大会的开幕演讲中,Unity首席执行官John Riccitiello向观众通报了开发人员如何利用Oculus,HTC等品牌创造的机遇来打造虚拟现实(VR)行业, ...
- 计算机的启动和Linux的启动
计算机的启动和Linux的启动 一 计算机的启动 计算机的启动过程分为四个阶段,分别是:BIOS.MBR.启动管理程序.加载操作系统内核.操作系统启动. 1.1 BIOS 计算机加电后,第一件 ...
- The authenticity of host '172.16.33.53 (172.16.33.53)' can't be established的问题(日志六)
用ssh登录一个机器(换过ip地址)会出现如下错误 weiguohui@weiguohui1-virtual-machine:~/.ssh$ ssh 172.16.33.53The authentic ...