- package test8;
- /*第8题:编写程序,拷贝一个带内容的文件夹。例如:将c:\program files\java文件夹拷贝到d盘
- * 根目录。
- * 思路:类File表示抽象的路径的路径或文件名
- * 用for循环增强遍历路径下的每一个文件
- * -1.在遍历的时候创建目标目录中的子目录和源目录的同名文件
- * -2.调用文件复制方法复制文件。
- * -3.运用递归
- * 用BufferedFileReader和BufferedFilerWriter将文件夹中的每一个文件复制到指定文件夹中
- *测试:在代码的指定位子输入源文件夹和目标文件夹
- * */
- import java.io.*;
- public class Test8 {
- public static void main(String[] args) throws Exception {
- File file1=new File("F:\\java\\10-4\\com.it.heima");//在这里输入源文件夹
- File file2=new File("F:\\java\\10-4\\com.it.heima-2");//在这里输入目标文件夹
- //File[] files1=file1.listFiles();
- System.out.println("hah");
- file2.mkdir();//创建目标文件夹
- acquireFile(file1,file2);//复制文件
-
- }
- //复制文件方法
- public static void copyFile(File source,File target) throws Exception{
- BufferedReader br=new BufferedReader(new FileReader(source));
- BufferedWriter bw=new BufferedWriter(new FileWriter(target));
- String str=null;
- while((str=br.readLine())!=null){
- bw.write(str);
- bw.newLine();
- bw.flush();
- }
- br.close();
- bw.close();
- }
- //遍历源目录,创建目标目录,复制文件
- public static void acquireFile(File source,File target){
- File[] files=source.listFiles();
- File subDirectory=target;//子目录标识:可动态的表示每个子目录的路径
- for(File m:files){//for循环加强遍历源目录下的每一个文件及文件夹
- if(m.isDirectory()==true){//判断是否为文件夹
- subDirectory=new File(subDirectory,m.getName());//创建同名文件夹
- subDirectory.mkdir();
- acquireFile(m,subDirectory);//运用递归
- }else{
- try {
- File file=new File(subDirectory,m.getName());//创建非文件夹文件
- copyFile(m,file);//复制文件
- } catch (Exception e) {
- // TODO 自动生成的 catch 块
- e.printStackTrace();
- }}
- subDirectory=target;//遍历完每个子目录后将子目录标识还原
- }
-
- }
- }
复制代码
|
|