目录拷贝——Java代码
import java.io.*;
public class CopyCouse {
/**
* 2020.7.28晚
*
*/
public static void main(String[] args) {
//可以继续降低耦合度
File f = new File("E:\\Java笔记");
CopyOperation.CopyCouse(f,"D:\\");
}
//封装成内部类的形式也是极好的
static class CopyOperation{
public static void CopyCouse(File A, String B){
//这段代码使得 “路径仅为盘符” 的时候,去除路径末尾的斜杠
boolean flag = true;
if(flag && B.endsWith("\\")){
B.substring(0,B.length()-2);
flag = false;
}
flag = false;
//如果是文件
if(A.isFile()){
Copy(A,B + "\\" + A.getName());
return;
}
//如果是目录
else{
File f = new File(B + "\\" + A.getName());
if(!f.exists()){
f.mkdirs();
}
File[] files = A.listFiles();
for(File file : files){
CopyCouse(file,B + "\\" + A.getName());
}
return;
}
}
//封装 文件拷贝代码
public static void Copy(File A, String B){
FileOutputStream fos = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(A);
fos = new FileOutputStream(B);
byte[] bytes = new byte[1024 * 1024];
int readCound = 0;
while((readCound = fis.read(bytes)) != -1){
fos.write(bytes,0,readCound);
}
fos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}