1.需求描述
当前有一张图片,将此图片
复制一份
。
2.思路分析
1.图片是一种二进制的文件,所以使用字节流来进行读写操作;
2.将原文件读入到程序中,然后再将读取的内容写入到一个新的文件中即可;
3.字节输出流,要使用追加的方式,这样才能写出一个完整的文件;
4.输入流和输出流使用完成后都需要进行关闭。
3.代码实现
如下代码可以直接复用
package com.northcastle.fileOperation;
import java.io.*;
public class ApplicationFileCopy {
public static void main(String[] args) {
//1.字节流复制文件
fileCopy01();
}
/**
* 1.使用字节输入流和字节输出流完成文件的复制
* 实现思路 : 一边读,一边写
*/
public static void fileCopy01(){
//1.两个文件 :源文件和目标文件
File fileSource = new File("D:\\EDailyRoutine\\java-io-test\\aaa.JPG");
File fileCopy = new File("D:\\EDailyRoutine\\java-io-test\\aaa_copy02.jpg");
//2.声明输入流和输出流对象
FileInputStream inputStream = null;
FileOutputStream outputStream = null;
//3.读取文件的缓存数组和长度记录
byte[] buff = new byte[1024];
int len = 0;
try {
//4.创建输入流和输出流对象
inputStream = new FileInputStream(fileSource);
outputStream = new FileOutputStream(fileCopy,true); // 追加写入文件
//5.开始进行读写操作
System.out.println("==> 复制文件 begin : "+System.currentTimeMillis()+"<==");
while ((len = inputStream.read(buff)) != -1){ // 读
outputStream.write(buff,0,len); // 写
}
System.out.println("==> 复制文件 end : "+System.currentTimeMillis()+"<==");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
// 关闭两个流
try {
if (inputStream != null){
inputStream.close();
}
if (outputStream != null){
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
查看执行完成后的效果:
复制后的文件大小与源文件大小一致,且可以正常打开。
4.完成
Congratulations!
You are one step closer to success!