题目:把C:/cpolin/first 文件夹中内容复制到C:/cpolin/secend中
运行环境:jdk 1.8.0
示例代码:
package test;
import java.io.*;
public class Copydire {
//源文件夹,目录文件夹
static String url1 = "C:/cpolin/first";
static String url2 = "C:/cpolin/secend";
public static void main(String args[]) throws IOException {
//创建目标文件夹
(new File(url2)).mkdirs();
//获取源文件夹的文件或目录
File[] file = (new File(url1)).listFiles();
// System.out.println(file);
for(int i = 0; i < file.length; i++){
if(file[i].isFile()) {
//复制文件
copyFile(file[i],new File(url2+ File.separator +file[i].getName()));
}
if(file[i].isDirectory()) {
//复制目录
String sourceDir = url1 + File.separator + file[i].getName();
String targetDir = url2 + File.separator + file[i].getName();
copyDirectiory(sourceDir, targetDir);
}
}
}
//复制文件
private static void copyFile(File file, File file2) throws IOException {
//新建输入流,并进行缓冲
FileInputStream input = new FileInputStream(file);
BufferedInputStream inBuff = new BufferedInputStream(input);
//新建输出流,并进行缓冲
FileOutputStream output = new FileOutputStream(file2);
BufferedOutputStream outbuff = new BufferedOutputStream(output);
//缓冲数组
byte[] b = new byte[1024*5];
int len;
while ((len =inBuff.read(b)) != -1) {
outbuff.write(b, 0, len);
}
//刷新输出流
outbuff.flush();
//关闭流
inBuff.close();
outbuff.close();
output.close();
input.close();
}
private static void copyDirectiory(String sourceDir, String targetDir) throws IOException {
// 复制目录
// 新建目标目录
(new File(targetDir)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(sourceDir)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 源文件
File sourceFile=file[i];
// 目标文件
File targetFile=new
File(new File(targetDir).getAbsolutePath()
+File.separator+file[i].getName());
copyFile(sourceFile,targetFile);
}
if (file[i].isDirectory()) {
// 准备复制的源文件夹
String dir1=sourceDir + "/" + file[i].getName();
// 准备复制的目标文件夹
String dir2=targetDir + "/"+ file[i].getName();
copyDirectiory(dir1, dir2);
}
}
}
}