基于java的字节流实现文件拷贝
java的文件拷贝是基于IO流实现的,利用字节流完成文件拷贝需要用到FileInputStream和FileOutputStream类
来实现,给出标准文件和目标目录,实现将标准文件拷贝到目标目录下,并新建同样命名的文件
设计思路
- 获取源文件的输入流(FileInputStream)
- 获取目标文件的输出流(FIleOutputStream)并创建新文件
- 声明字节缓冲区
- 循环读取以及写入
- 输出流关闭
- 输入流关闭
代码如下
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopy {
/**
* 将源文件拷贝到目标目录中
*
* @param sourceFile 源文件(标准文件)
* @param targetDir 目标目录(目录)
* @throws IOException
*/
public void copy(File sourceFile, File targetDir) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
// 获取源文件的输入流
fis = new FileInputStream(sourceFile);
// 获取目标文件的输出流
fos = new FileOutputStream(new File(targetDir, sourceFile.getName()));
// 声明字节缓冲区
byte[] b = new byte[1024];
// 声明变量存储真实读取长度
int len = 0;
// 循环读取以及写入
while ((len = fis.read(b)) != -1) {
fos.write(b, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
if (fis != null) {
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException {
File source = new File("D:\\day18 20190727\\20190727\\video\\01_泛型概述.avi");
File target = new File("D:\\javacode\\doc");
new FileCopy().copy(source, target);
}
}