创建一个文件拷贝程序,
代码
import java.io.*;
//创建文件拷贝测试程序。
public class FileCopyTest {
public static void main(String[] args) {
File filey = new File("C:\\JAVA笔记");//初始拷贝源文件对象
File filem = new File ("D:\\JAVA笔记");//初始粘贴目标文件对象
dirCopy(filey,filem);
}
/**
* 创建目录新建程序
* @param //filey拷贝源
* @param //filem粘贴目标
*/
public static void dirCopy(File filey, File filem){
if (filey.isDirectory()){//判断输入的目录拷贝源是否是一个目录
if (!filem.exists()){//如果是一个目录,判断粘贴目标位置是否有该目录,没有则在粘贴位置新建该目录。
filem.mkdir();
System.out.println(filem.toString()+"目录创建成功");
}
//程序执行到这一步,证明目标粘贴位置已经有该目录
String[] files=filey.list();//将拷贝员源中的这一级目录里面的文件(这里的文件指“目录”+“文件”)转化为String数组,
// 数组中元素如果不是一个目录而是文件(具体的“文件”),会返回null,直接进行文件拷贝
for (String childFile:files){//增强for循环遍历,
if (files!=null){//数组中元素仍有目录,创建子目录对象及粘贴目标对象,递归直到不是一个目录。
File fileyChildFile=new File(filey,childFile);
File filemChildFile=new File(filem,childFile);
dirCopy(fileyChildFile,filemChildFile);
}else{//递归最终结果,执行文件拷贝。
fileCopy(filey.toString(),filem.toString());
}
}
}else{//第一个if的else,直接执行文件拷贝的情况。
fileCopy(filey.toString(),filem.toString());
}
}
/**
* 创建文件拷贝程序
* @param //fi拷贝源
* @param //fo粘贴源
*/
public static void fileCopy(String fi,String fo){
FileInputStream fis=null;//输入流
FileOutputStream fos=null;//输出流
try {
fis=new FileInputStream(fi);
fos=new FileOutputStream(fo);
byte[] bytes=new byte[102400*1024];
int record=0;
while((record=fis.read(bytes))!=-1){//read时,当read到末尾时会返回-1.
//异常处理
try {
fos.write(bytes,0,record);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {//流关闭
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if (fos!=null){
try {
fos.flush();//刷新此输出流并强制写出任何缓冲的输出字节。
System.out.println(fo.toString()+"文件拷贝成功");
fos.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
运行结果
D:\JAVA笔记\01-JAVASE\004-JavaSE相关文档与面试题\006-动力节点-面试题-线程\006-动力节点-面试题-线程.pdf文件拷贝成功
D:\JAVA笔记\01-JAVASE\004-JavaSE相关文档与面试题\007-API文档目录创建成功
D:\JAVA笔记\01-JAVASE\004-JavaSE相关文档与面试题\007-API文档\jdk1.8中文.CHM文件拷贝成功
D:\JAVA笔记\01-JAVASE\004-JavaSE相关文档与面试题\007-API文档\jdk11-oracle官方英文-帮助文档.zip文件拷贝成功
D:\JAVA笔记\01-JAVASE\004-JavaSE相关文档与面试题\007-API文档\JDK6API中文参考手册.chm文件拷贝成功
D:\JAVA笔记\01-JAVASE\004-JavaSE相关文档与面试题\007-API文档\jdk8-oracle官方英文-帮助文档.rar文件拷贝成功
D:\JAVA笔记\01-JAVASE\java初学者常用单词.xls文件拷贝成功
D:\JAVA笔记\JDK 11 API中文帮助文档.CHM文件拷贝成功
####递归