package practice;
import java.io.*;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
java.util.Scanner in = new Scanner(System.in);
java.util.Scanner out = new Scanner(System.in);
Copy02 copy = new Copy02();
System.out.println("请输入起始目录(绝对路径)如 H:\\Java H:\\editPlus ");
String begin = in.next();
System.out.println("请输要复制到哪里的目录(如果是复制到盘里,直接输入盘的名称:如D: 或者输入绝对路径,如H:\\a\\b\\c\\d\\e ");
String over = out.next();
Date date = new Date();
SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM--dd HH:mm:ss SSS");
double begintime = System.currentTimeMillis();
copy.copy02(begin,over);
Date date1 = new Date();
double overtime = System.currentTimeMillis();
String time = String.format("%.2f",((overtime - begintime)/1000));
System.out.println("复制文件共用时 :" + time + " 秒");
}
}
class Copy02{
public void copy02(String in,String out){
File infile = new File(in);
String chuShi = in.substring(2);
File file09 = new File( out + chuShi);
if(file09.exists()){
return;
}else {
file09.mkdir();
System.out.println(file09.toString() + "根目录建立成功!!!");
}
File[] mulu = infile.listFiles();
if(mulu.length == 0){
System.out.println( infile + "文件夹为空,就这也要劳烦我JVM???");
return;
}else {
for (File wenjian : mulu) {
if (!(wenjian.isDirectory())) {
FileInputStream inputStream = null;
FileOutputStream outputStream = null;
try {
inputStream = new FileInputStream(wenjian);
String luJing = wenjian.getAbsolutePath().substring(2);
System.out.println((out + luJing )+ "复制成功!!!");
outputStream = new FileOutputStream(out + luJing);
byte[] bytes = new byte[1024 * 1024];
int readCount = 0;
while((readCount = inputStream.read(bytes)) != -1){
outputStream.write(bytes,0,readCount);
}
outputStream.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
copy02(wenjian.getAbsolutePath(),out);
}
}
}
}
}
下面的只能copy一个文件夹,也是失败的
package practice;
import java.io.*;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
java.util.Scanner in = new Scanner(System.in);
java.util.Scanner out = new Scanner(System.in);
Copy copy = new Copy();
System.out.println("请输入起始目录(绝对路径):");
String begin = in.next();
System.out.println("请输要复制到哪里的目录(如果是复制到盘里,直接输入盘的名称:如D: 或者输入绝对路径,如H:\\a\\b\\c\\d\\e ");
String over = out.next();
copy.copy(begin,over);
}
}
class Copy{
public void copy(String in,String out){
File infile = new File(in);
String chuShi = null;
chuShi = in.substring(2);
File file09 = new File( out + chuShi);
if(file09.exists()){
return;
}else {
file09.mkdir();
System.out.println(file09.toString() + "根目录建立成功!!!");
}
if(infile == null){
return;
}else {
File[] mulu = infile.listFiles();
for (File wenjian : mulu) {
if (wenjian.isFile()) {
String i = wenjian.getAbsolutePath();
FileInputStream inputStream = null;
FileOutputStream outputStream = null;
try {
inputStream = new FileInputStream(i);
String luJing = i.substring(2);
String outLuJing = out + luJing;
System.out.println(outLuJing);
System.out.println(outLuJing + "复制成功!!!");
outputStream = new FileOutputStream(outLuJing);
byte[] bytes = new byte[1024 * 1024];
int readCount = 0;
while((readCount = inputStream.read(bytes)) != -1){
outputStream.write(bytes,0,readCount);
}
outputStream.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
String wenJianJiaLuJing = wenjian.getAbsolutePath();
String luJing01 = wenJianJiaLuJing.substring(2);
File file01 = new File( out + luJing01);
if(file01.exists()){
return;
}else {
file01.mkdirs();
System.out.println(file01.toString() + "文件夹复制成功0000000000000000000");
}
copy(wenjian.getParent(),out);
}
}
}
}
}