- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- /*
- * 需求:复制多级文件
- * 思路:使用File关联源文件和目的文件,目的文件和源文件名一样,只是盘路径不一样
- * 定义一个方法,接受的参数是源文件和目的文件
- * 使用listFiles方法,将源文件存入File数组中
- * 使用高级for遍历File数组,
- * 在遍历过程中,每次遍历关联不同路径下的同级目录文件或者文件夹
- * 判断遍历的文件是否是目录
- * 如果是,同级文件创建文件夹
- * 使用递归,调用函数本身,参数是遍历的文件和同级目录文件
- * 如果不是,判断是否存在此文件,如果不存在,创建文件
- * 因为可能不是纯文本,使用字节流读取操作文件,记得关闭底层资源
- */
- public class Copy_1
- {
- public static void main(String[] args) throws IOException
- {
- File source = new File("G:\\a - 副本");
- File dest = new File("d:", source.getName());
-
- if(!dest.exists())//这一步必须要有,否则系统出错-“系统找不到指定路径”
- {
- dest.mkdir();
- }
-
- copyFile(source, dest);
- }
- private static void copyFile(File source, File dest) throws IOException
- {
- File[] files = source.listFiles();
-
- for(File file : files)
- {
- System.out.println(file);
- File newFile = new File(dest, file.getName());
-
- if(file.isDirectory())
- {
- if(!newFile.exists())
- {
- newFile.mkdir();
- }
-
- copyFile(file, newFile);
- }else
- {
- FileInputStream fis = new FileInputStream(file);
- FileOutputStream fos = new FileOutputStream(newFile);
-
- byte[] bt = new byte[1024];
- int len = 0;
-
- while((len=fis.read(bt))!=-1)
- {
- fos.write(bt, 0, len);
- }
-
- fis.close();
- fos.close();
- }
- }
- }
- }
复制代码 |