使用缓冲流实现文件的复制
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();
}
}
}
}
}
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();
}
}
}
}
}
相关文章推荐
- 学习之使用Java IO 来实现复制文件的操作
- Java实现在复制文件时使用进度条
- 使用java递归实现文件及文件夹的复制
- 使用FileStream实现多媒体文件的复制
- 使用输入输出流实现文件复制
- 使用shell脚本实现USB设备的加载与文件复制
- 文件映射mmap简单设置文件大小(lseek (ftruncate可以设置文件大小))__使用mmap即文件映射实现文件的快速复制代码
- Java7中使用try-with-resource语法 实现两种复制文件方法
- 使用JAVA实现比较两个文件夹下的文件新增和修改情况,并复制到新的目录(实现增量更新项目)
- linux 使用系统接口实现复制文件
- 使用splice实现零拷贝复制文件
- 使用InputStream和OutputStream实现文件复制
- 使用java输入输出流实现文件的复制:
- 将指定的文件复制到指定的位置{使用字符流和字节流分别实现}
- 使用Remote Desktop organizer远程桌面管理工具连接服务器不能实现真机与被远程主机之间的文件拖拉复制
- 使用mmap即文件映射实现文件的快速复制
- 使用组策略实现文件复制
- 使用splice实现零拷贝复制文件
- IO —— 使用打印流实现文件的复制
- 使用FileChannel(文件通道)来实现文件快速复制