`
061041033
  • 浏览: 37571 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java复制文件夹

阅读更多

本实例主要功能是实现文件夹的复制。文件夹的复制方法和文件基本类似。实现步骤如下。

1)创建FolderCopy,在main()主方法中建立源文件夹和目标文件夹两个对象,调用源文件夹的listFiles()方法获取文件数组(即文件列表),通过这个文件数组和目标文件夹调用copy()方法完成文件夹的复制。

2在该类中创建copy()方法,该方法接收文件数组和目标文件夹两个参数,如果目标文件夹不存在,则调用mkdir()方法创建文件夹;然后在循环中判断文件数组中的每个文件对象,如果文件对象是文件类型则复制该文件到目标文件夹中,如果该文件对象是文件夹类型,则调用该方法的listFiles()方法获取该文件夹的文件数组(即文件夹的文件列表),创建新的目标文件夹对象;再通过文件数组和目标文件夹嵌套调用该方法,这样就能把文件夹所有的东西复制到另外一个文件夹下。关键代码如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FolderCopy {
	public static void main(String[] args) {

		File sourFile = null, desFile = null;
		String sourFolder = "c:/test";
		String desFolder = "c:/copyTest";
		sourFile = new File(sourFolder);
		if (!sourFile.isDirectory() || !sourFile.exists()) {
			System.out.println("原文件夹不存在");
		}
		desFile = new File(desFolder);
		desFile.mkdir();
		copy(sourFile.listFiles(), desFile);
	}

	private static void copy(File[] s, File d) {
		if (!d.exists())
			d.mkdir();
		for (int i = 0; i < s.length; i++) {
			if (s[i].isFile()) {
				try {
					FileInputStream fis = new FileInputStream(s[i]);
					FileOutputStream out = new FileOutputStream(new File(d
							.getPath()
							+ File.separator + s[i].getName()));
					int count = fis.available();
					byte[] data = new byte[count];
					if ((fis.read(data)) != -1) {
						out.write(data);
					}
					out.close();
					fis.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
			if (s[i].isDirectory()) {
				File des = new File(d.getPath() + File.separator
						+ s[i].getName());
				des.mkdir();
				copy(s[i].listFiles(), des);
			}
		}
	}
}
 

分享到:
评论
1 楼 buyizhouji 2013-02-02  
好!!感谢!

相关推荐

Global site tag (gtag.js) - Google Analytics