java实现拷贝目录以及目录下的文件
注意拷贝路径和复制路径的
用endwith()来判断目标路径的结尾
用substring()来剪切复制源路径
用三目运算符简化代码
package comstudy;
import java.io.*;
public class copydirall {
public static void main(String [] agrs){
//copy源
File srcFile =new File("D:\\testcopy");
//copy目标
File destFile = new File("C:\\a\\b\\c\\");
//调用方法拷贝
copyDir(srcFile,destFile);
}
private static void copyDir(File srcFile,File destFile){
if(srcFile.isFile()){
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream(srcFile);
String path = (destFile.getAbsolutePath().endsWith("\\") ?
destFile.getAbsolutePath():destFile.getAbsolutePath()+ "\\")
+srcFile.getAbsolutePath().substring(3);
out = new FileOutputStream(path);
byte[] bytes = new byte[1024 * 1024];
int readCount = 0;
while ((readCount = in.read(bytes)) != -1){
out.write(bytes,0,readCount);
}
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(out != null){
try {
out.close();
}catch (IOException e){
e.printStackTrace();
}
}
if(in != null){
try {
in.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return;
}
//获取源下面的子目录
File[] files = srcFile.listFiles();
for(File file : files){
// System.out.println(file.getAbsolutePath());
if(file.isDirectory()){
String desDir = (destFile.getAbsolutePath().endsWith("\\") ?
destFile.getAbsolutePath():destFile.getAbsolutePath()+ "\\")
+file.getAbsolutePath().substring(3);
File newFile = new File(desDir);
if(!newFile.exists()){
newFile.mkdirs();
}
}
copyDir(file,destFile);
}
}
}
)来判断目标路径是否以双反斜结尾
用

浙公网安备 33010602011771号