Java中其实有很多种方式可以完成对文件的复制,这里可以参考我之前的一片博客,本次我们主要是详细地对其中一种进行实现。
众所周知,任何文件都是一个一个字节组成的,而这些字节我们把它复制过来,就相当于我们复制过来了一个文件了!当然了,由于使用的是字节流,而非字符流,所以任何格式的文件我们都可以拷贝,包括但不仅限于文本文件、音频、图片、视频等等。下面让我们来一起看一看吧!
package iostream.FileOutputStream;
import java.io.*;
/**
* 使用FileInputStream和FileOutPutStream完成文件的拷贝
* 拷贝的过程应该是一边读一边写
* 使用以上字节流拷贝文件的时候,文件类型随意,万能的,什么样的文件都能拷贝
*/
public class FileOutPutStreamTest2 {
public static void main(String[] args) {
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
//创建一个输入流对象
fileInputStream = new FileInputStream("/Users/yuuki/Downloads/loveletter.flv");
//创建一个输出流对象
fileOutputStream = new FileOutputStream("/Users/yuuki/Desktop/loveletter.flv");
//最核心的,一边读一边写,我们假使一次1M
byte[] bytes = new byte[1024 * 1024];
int readCount = 0;
while ((readCount = fileInputStream.read(bytes)) != -1) {
fileOutputStream.write(bytes,0,readCount);
}
//刷新,输出流最后要刷新
fileOutputStream.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//分开try...catch,不要一起
//一起try...catch的时候,如果一个出现异常,可能会影响到另一个流的关闭
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
这样就完成了对一个文件的复制了。