日志文章

2019-12-24 aflfte2011

IO缓冲流的使用(BufferedInputStream和bufferedOutputstream)

package com.aflfte.io2;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 使用BufferedInputStream提升文件读取性能
 * @author jinhao
 *
 */
public class BufferedTest01 {

public static void main(String[] args) {
//简化写法
File src=new File("dest.txt");
InputStream is=null;
try {
is=new BufferedInputStream(new FileInputStream(src));
byte[] flush=new byte[1024];
int len=-1;
while((len=is.read(flush))!=-1) {
String str=new String(flush,0,len);
System.out.println(str);
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
try {
is.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}

}
public static void test01() {//第一种写法
File src=new File("dest.txt");//创建源
InputStream is=null;//选择流
BufferedInputStream bis=null;//加入缓冲流
try {
is=new FileInputStream(src);
bis=new BufferedInputStream(is);///建立缓冲区
byte[] flush=new byte[1024];
int len=-1;
while((len=is.read(flush))!=-1) {
String str=new String(flush,0,len);
System.out.println(str);
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
if(is!=null) {
try {
is.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
if(bis!=null) {
try {
bis.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}

}
package com.aflfte.io2;
/**
*使用bufferedOutputStream提升文件写入性能
*/
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class BufferedTest02 {
public static void main(String[] args) {
File src=new File("12.txt");
OutputStream ou=null;
try {
ou=new BufferedOutputStream(new FileOutputStream(src));
String msg="Hello Word!!";
byte[] datas=msg.getBytes();
ou.write(datas,0,datas.length);
ou.flush();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
try {
ou.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}

}
}
package com.aflfte.io2;
/**
* 利用文件拷贝实例测试Buffered性能提升效果
* buffered可多次使用但是性能只能被提升一次,多写无用
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class BufferedCopy {
public static void main(String[] args) {
long t1=System.currentTimeMillis();
bufferedCopy("F:/debian-9.6.0-i386-netinst.iso","D:/debian.iso");
long t2=System.currentTimeMillis();
long t=t2-t1;
System.out.println("Copy is OK,the time="+t+"ms");
}
public static void bufferedCopy(String inpath,String oupath) {
File in=new File(inpath);
File ou=new File(oupath);
try(InputStream is=new BufferedInputStream(new FileInputStream(in));
OutputStream os=new BufferedOutputStream(new FileOutputStream(ou))){
byte[] flush=new byte[1024];
int len=-1;
while((len=is.read(flush))!=-1) {
os.write(flush,0,len);
}
os.flush();

}catch(IOException e) {
e.printStackTrace();
}
}
public static void copy(String inpath,String oupath) {
File in=new File(inpath);
File ou=new File(oupath);
try(InputStream is=new FileInputStream(in);
OutputStream os=new FileOutputStream(ou)){
byte[] flush=new byte[1024];
int len=-1;
while((len=is.read(flush))!=-1) {
os.write(flush,0,len);
}
os.flush();
}catch(IOException e) {
e.printStackTrace();
}
}

}





« 弹球游戏练习 | 拷贝的封装与资源释放方法»