您的位置:首页 > 其它

使用缓冲流实现文件的复制

2014-12-31 09:42 302 查看
package com.yuxinyicheng.java;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import org.junit.Test;

/*

 *基本的流                                节点流                              缓冲流(处理流的一种)

 *InputStream                     FileInputStream                   BufferedInputStream

 *OutputStream                  FileOutputStream                 BufferedOutputStream  (flush())

 *Reader                             FileReader                            BufferedReader            readLine();

 *Writer                              FileWriter                             BufferedWriter             (flush())  (newLine())

 * 

 * 总结:一般来说,我们在写的时候会使用缓冲流,因为缓冲流的效率高,

 *          对于非文本文件的会使用字节流,而文本文件的会使用字符流,因为效率高

 *         ②在使用缓冲流中,每次写入数据之后要flush()

 *            关闭资源的时候先关写入流的

 *         ③BufferedReader中有一个方法是读取一行的readLine()

 *            BufferedWriter中有一个方法是换行的newLine

 * */

public class TestBuffered {
@Test
public void test(){
String src="1.jpg";
String dest="2.jpg";
copy(src,dest);
}
//非文本文件的复制
public void copy(String src,String dest){
//3,创键写入和写出的缓冲流
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try {
//1,创键写入和写出的文件
File file1=new File(src);
File file2=new File(dest);
//2,创键写入和写出的节点流
FileInputStream fis=new FileInputStream(file1);
FileOutputStream fos=new FileOutputStream(file2);
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);
//4,执行读取和写入的操作
byte[] b = new byte[20];
int len;
while((len=bis.read(b))!=-1){
bos.write(b);
bos.flush();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//5,关闭流
if(bos!=null){
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(bis!=null){
try {
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

@Test
public void test1(){
String src="hello.txt";
String dest="hello2.txt";
copy1(src,dest);
}
//实现文本文件的复制
public void copy1(String src,String dest){
BufferedReader br=null;
BufferedWriter bw=null;
try {
File file1=new File(src);
File file2=new File(dest);
FileReader fr=new FileReader(file1);
FileWriter fw=new FileWriter(file2);
br=new BufferedReader(fr);
bw=new BufferedWriter(fw);
String str=null;
while((str=br.readLine())!=null){
bw.write(str);
bw.newLine();
bw.flush();
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
if(bw!=null){
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(br!=null){
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: