将输入流的read(分段读取)方法接受的字节流直接写入输出流的指定文件中,通过方法的对接,完成文件内容的拷贝。
package cn.sxau.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* 将读取和写出文件对接实现文件内容的拷贝
* @author 王村长
*
*/
public class Copy {
public static void main(String[] args) {
//1.创建源(拷贝哪个文件,拷贝到哪个文件)
File src=new File("abc.txt");//从这里拷贝
File dest=new File("dest.txt");//拷贝到这里
InputStream is=null;//提升作用域
OutputStream os=null;
//2.选择IO流
try {
is=new FileInputStream(src);//输入流
os=new FileOutputStream(dest);//输出流
//3.读取操作(分段读取)+写入操作
//设定缓冲容器
byte[] datas=new byte[3];//长度为3
//接受长度
int len=-1;
//当读取到最后一个字节之后read返回-1
while((len=is.read(datas))!=-1){
os.write(datas, 0, len);
}
}catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{//4.释放资源,先打开的后关闭
try {
if(is!=null){
os.close();}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(os!=null){
os.close();}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}