1. 递归删除多级文件
* 利用递归删除多级目录结构
*
* 1:根目录结构是a
* 2:判断节点是否是目录
* 3:如果是文件,直接删除
* 4:如果不是文件,遍历目录
* 5:判断遍历后的每一个子节点是否为文件夹,如果不是文件夹,直接删除,如果是文件夹,继续
*/
public static void deleteFile(File file){
if(file.exists()){
if(file.isDirectory()){
File[] file2 = file.listFiles();
for (File file3 : file2) {
deleteFile(file3);
}
}
file.delete();
}
}
2. 复制文件夹
public static void copyDir(File sourceFile, File destFile) throws FileNotFoundException {
if(!sourceFile.exists()) {
throw new FileNotFoundException("源文件夹不存在!");
}
if(!destFile.exists()) {
destFile.mkdirs();
}
File[] files = sourceFile.listFiles();
for(File file : files) {
if(file.isFile()) {
copyFile(file, new File(destFile, file.getName()));
}
else {
copyDir(file, new File(destFile, file.getName()));
}
}
}
public static void copyFile(File sourceFile, File destFile) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
FileInputStream fis = new FileInputStream(sourceFile);
bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream(destFile);
bos = new BufferedOutputStream(fos);
byte[] by = new byte[1024];
int len = 0;
while((len = bis.read(by)) != -1) {
bos.write(by, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
File sourceDirFile = new File("E:\\JAVA1");
File destDirFile = new File("E:\\JAVA2");
try {
copyDir(sourceDirFile, destDirFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}