| 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();
 }
 }
 }
 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 |