您的位置:首页 > 编程语言 > Java开发

Java-IO-从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)

2018-01-11 16:38 309 查看
package cn.edu.lit.demo2;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

/**
*
* @author 包子
* @version 1.0
*/
public class Demo01 {
public static void main(String[] args) throws IOException {
System.out.println("请输入源文件夹的绝对路径:");
File srcDir = getDir();
System.out.println("请输入源文件夹的绝对路径:");
File destDir = getDir();
long start = System.currentTimeMillis();
copyFile(srcDir, destDir);
long end = System.currentTimeMillis();
System.out.println(end-start);

}

/**
* 键盘录入文件夹路径,判断路径是否合法
* @return File
*/
public static File getDir() {
Scanner sc = new Scanner(System.in);
while(true){
File file = new File(sc.nextLine());
if(!file.exists()) {
System.out.println("文件夹不存在请重新输入");
}else if(file.isFile()) {
System.out.println("输入的不是文件夹,请重新输入");
}else {
return file;
}
}
}

/**
* 复制文件
* @param srcDir 源路径
* @param sextDir 目的路径
* @throws IOException
*/
public static void copyFile(File srcDir, File destDir) throws IOException {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
File[] files = srcDir.listFiles();
for(File f : files) {
if(f.isDirectory()) {
File file = new File(destDir+File.separator+f.getName());
file.mkdirs();
copyFile(f, file);
}else {
bis = new BufferedInputStream(new FileInputStream(f));
bos = new BufferedOutputStream(new FileOutputStream(new
File(destDir.getAbsolutePath()+File.separator+f.getName())));
byte[] bytes = new byte[1024*1024*1024];
int len= 0;
while((len=bis.read(bytes))!=-1) {
bos.write(bytes,0,len);
}
bis.close();
bos.close();
}
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐