本帖最后由 胡军喜 于 2012-3-1 15:46 编辑
自己写的例子,经测试,可以拷贝:
拷贝文件的方法单独抽取出来,这样既可以拷贝文件,又可以拷贝文件夹,其中拷贝文件夹调用了拷贝文件的方法。
*****************************************代码开始*****************************************
package cn.itcast.entrancetest.problem08;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
/** 编写程序,拷贝一个带内容的文件夹。 例如:将c:\program files\java 文件夹拷贝到d盘根目录 **/
public static void main(String[] args) throws Exception {
// 测试,把D:\Program Files\Java拷贝到E盘根目录
System.out.println("文件夹拷贝结果:"
+ copyDir("D:\\Program Files\\Java", "E:\\"));
}
// 拷贝目录
public static boolean copyDir(String originPath, String destPath)
throws Exception {
File originDir = new File(originPath);
File destDir = new File(destPath);
if (!originDir.exists()) {
System.out.println("源目录不存在");
return false;
}
if (!destDir.exists()) {
System.out.println("目标目录不存在,正在创建目标目录……");
destDir.mkdir();
System.out.println("目标目录创建成功!");
}
File[] files = originDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
copyDir(originPath + "\\" + file.getName(), destPath + "\\"
+ file.getName());
} else {
copyFile(originPath + "\\" + file.getName(), destPath + "\\"
+ file.getName());
}
}
return true;
}
// 拷贝文件
public static void copyFile(String in, String out) {
FileOutputStream fw = null;
FileInputStream fr = null;
try {
fw = new FileOutputStream(out);
fr = new FileInputStream(in);
byte[] bt = new byte[1024];
int len = 0;
while ((len = fr.read(bt)) != -1) {
fw.write(bt, 0, len);
}
} catch (IOException e) {
throw new RuntimeException("读写失败!");
} finally {
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
}
}
*****************************************代码结束*****************************************
|