package com.mayflay.utils;
import java.io.*;
/**
* 文件、文件夹 递归复制、移动
* @Author: mihuajun 【kobe96688@126.com】
* @Date: 12/9/2016 10:22 AM
*/
public class FileUtils {
public static void copy(File sourceFileOrDir,File targetDir) {
verifyExists(sourceFileOrDir);
execute(sourceFileOrDir,targetDir,false);
}
public static void move(File sourceFileOrDir,File targetDir) {
verifyExists(sourceFileOrDir);
execute(sourceFileOrDir,targetDir,true);
}
public static void copyChild(File sourceDir,File targetDir) {
verifyExists(sourceDir);
verifyDir(sourceDir);
for(File item : sourceDir.listFiles()){
execute(item,targetDir,false);
}
}
public static void moveChild(File sourceDir,File targetDir){
verifyExists(sourceDir);
verifyDir(sourceDir);
for(File item : sourceDir.listFiles()){
execute(item,targetDir,true);
}
}
private static void execute(File sourceFileOrDir,File targetDir,Boolean isRemove) {
if(!targetDir.exists())targetDir.mkdirs();
File newTargetFile = new File(targetDir.getAbsolutePath()+File.separator+sourceFileOrDir.getName());
if(sourceFileOrDir.isDirectory()){
newTargetFile.mkdir();
for(File item : sourceFileOrDir.listFiles()){
FileUtils.execute(item,newTargetFile,isRemove);
}
if(isRemove){
sourceFileOrDir.delete();
}
return;
}
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(sourceFileOrDir);
fileOutputStream = new FileOutputStream(newTargetFile);
byte[] buff = new byte[1000];
int len = 0;
while((len = fileInputStream.read(buff))!=-1){
fileOutputStream.write(buff,0,len);
}
fileInputStream.close();
fileOutputStream.close();
if(isRemove){
sourceFileOrDir.delete();
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(fileInputStream != null) try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}
if(fileOutputStream != null)try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}
}
}
private static void verifyExists(File file){
if(!file.exists()){
throw new RuntimeException(file.getAbsolutePath()+" is not exists");
}
}
private static void verifyDir(File dir){
if(!dir.isDirectory()){
throw new RuntimeException(dir.getAbsolutePath()+" is not directory");
}
}
}
java 文件、文件夹 递归复制、移动
最新推荐文章于 2023-03-22 20:19:17 发布