黑马程序员技术交流社区
标题:
关于学习 IO 的一点小练习,复制任意目录的内容到指定的目录
[打印本页]
作者:
xiaowen_wu
时间:
2015-6-3 12:30
标题:
关于学习 IO 的一点小练习,复制任意目录的内容到指定的目录
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 这是一个复制某一目录下所有的内容到指定目录下的类
* @author wen
*/
public class CopyFiles {
private static int I = 1;
/**
* 这是复制文件的方法
* @param src 要复制的源路径
* @param dest 目的地
*/
public void getCopyFile(String src, String dest) {
// 封装数据源
File srcFile = new File(src);
// 封装目的地
File destFile = new File(dest);
// 计算复制时间
System.out.println("复制开始,请稍后...");
long str = System.currentTimeMillis();
CopyFile(srcFile, destFile);
long end = System.currentTimeMillis();
System.out.println("复制完成,共耗时: " + (end - str) + "毫秒");
}
private void CopyFile(File src, File dest) {
// 获取src目录下的所有文件
File[] file = src.listFiles();
// 遍历
if (file != null) {
for (File f : file) {
if (f.isDirectory()) {
dest = newFile(f, dest);
CopyFile(f, dest);
dest = dest.getParentFile();
} else {
if (!dest.exists()) {
dest.mkdirs();
}
try {
copyFile(f, dest);
System.out.println("第" + (I++) + "条文件 : "
+ f.getName());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
private void copyFile(File f, File dest) throws IOException {
// 封装源数据
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(f));
// 封装目的地
File file = new File(dest, f.getName());
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(file));
// 读写数据
byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
bos.flush();
}
// 释放资源
bis.close();
bos.close();
}
private File newFile(File f, File dest) {
// 封装目的地
File file = new File(dest, f.getName());
file.mkdirs();
System.out.println("第" + (I++) + "条文件 : " + file.getName());
return file;
}
}
import java.util.Scanner;
public class CopyFileTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要复制的文件路径:");
String src = sc.nextLine();
System.out.println("请输入要复制的文件路径:");
String dest = sc.nextLine();
CopyFiles cf = new CopyFiles();
cf.getCopyFile(src, dest);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2