简述使用字节流实现文件复制的原理?
答:一边读一边写,源文件复制到目标文件,中间需要搭个桥(通过java程序),程序总有中转站(可大可小,可以是一个字节,也可以是一个byte数组),源文件到中转站通过FileInputStream文件字节输入流,将数据读取到中转站,中转站到目标文件通过FileOutStream文件字节输出流,将数据写入目标文件。
简述使用字节流实现文件复制的步骤?
答:首先创建两个流(输入流、输出流),创建中转站(byte数组或者一个字节),中转站中将读取的数据写入目标文件,关闭文件(倒着顺序)
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class caogao {
public static void main(String[] args){
//搭桥 先fis后fos
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis = new FileInputStream("f:\\a.txt");
fos = new FileOutputStream("g:\\target.txt");
//中转站(这里是数组,也可以使用一个字节,一个字节一个字节的处理)
byte []buf=new byte[1024];
int len=0;//存放写入的数据
while((len=fis.read(buf))!=-1) {
fos.write(buf, 0, len);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//关闭流 倒着关闭 先fos后fis
try {
if(fos!=null) {
fos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(fis!=null) {
fis.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}