复制文件夹及其子文件夹的内容(还是自己写的容易理解)



思路:

首先,获得源文件夹路径和目的文件夹路径,

然后,将路径封装成对象,对源文件夹获取文件列表, 使用listFile()方法

进行循环遍历,判断如果是文件则进行拷贝,如果不是文件而是文件夹那么进行递归调用

package IOTest;

import java.io.*;
public class CopyMkdir
{

    /**
     * @param args
     */
    public static void main(String[] args) throws IOException
    {
	copyMkdir("d:/java","d:/jad");
	System.out.println("拷贝文件夹成功");

    }

    public static void copyMkdir(String oldPath,String newPath) throws IOException
    {
	//将源文件夹径封装成File对象
	File sourcePath = new File(oldPath);
	//获得源文件夹的列表
	File[] files = sourcePath.listFiles();
	//将目的文件夹封装成File对象
	File targetPath = new File(newPath);
	//如果目标文件夹不存在则创建
	if(!targetPath.exists())
	{
	    //因为可能创建多级文件夹 所以用mkdirs而不用mkdir
           targetPath.mkdirs();
	}
	
	//进行遍历源文件夹
	for(File f : files)
	{
	    //如果是文件
	    if(f.isFile())
	    {
		//调用拷贝文件方法,这里的参数很重要 是变化的(注意getPath 和getName)
		copyFile(f.getPath(),newPath+"\\"+f.getName());
	    }
	    else
	    {
		//如果不是文件而是文件夹的话,递归调用copyMkdir,参数是变化的注意
		copyMkdir(f.getPath(),newPath+"\\"+f.getName());
		
	    }
	    
	}
	

	
    }
    
    //这里写的例子为了好理解 就抛出异常了   主要是为了理解
    public static void copyFile(String st1, String st2) throws IOException
    {
	//读取流  因为我的全是文本文件 用这个比较好
	BufferedReader bfr =
		new BufferedReader(new FileReader(st1));
	
	//写入流
	BufferedWriter bfw = 
		new BufferedWriter(new FileWriter(st2));
	
	String line = null;
	// 循环读取写入
	while((line = bfr.readLine())!=null)
	{
	    bfw.write(line);
	    bfw.flush();
	}
	
	bfr.close();
	bfw.close();
	
    }
    
}


你可能感兴趣的:(复制文件夹及其子文件夹的内容(还是自己写的容易理解))