package com.io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileUtils {
/**
* 文件的拷贝
* @param source 来源,需要拷贝的文件
* @param target 目标,拷贝目的位置
* @return
*/
public static boolean fileCopy(File source,File target) {
BufferedReader br=null;
BufferedWriter bw=null;
try {
br=new BufferedReader(new FileReader(source));//读取文件
File nf=new File(target,source.getName());
bw=new BufferedWriter(new FileWriter(nf));//写入文件
String str=null;
while((str=br.readLine())!=null) {
bw.write(str+"\r\n");
}
bw.flush();//刷新缓冲区
} catch (Exception e) {
e.printStackTrace();
return false;
}finally {
try {
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
return true;
}
/**
* 目录拷贝复制
* @param source 需要拷贝的目录
* @param target 拷贝目的位置
*/
public static void copyDir(File source,File target) {//D:\a\b D:\\animal
File files[]=source.listFiles();
File ndir=new File(target,source.getName());//D:\\animal\\a
if(!ndir.exists()) {//没有目录
ndir.mkdir();//创建目录
}
if(files!=null && files.length>0) {
for(File f:files){
if(f.isFile()) {//拷贝文件 D:\\a\\1.txt D:\\animal\\a
fileCopy(f,ndir);
}else {//目录,递归 D:\a\b D:\\animal\\a
copyDir(f,ndir);
}
}
}
}
/**
* 删除指定目录
* @param dir
*/
public static void delDir(File dir) {
File [] files=dir.listFiles();
if(files!=null && files.length>0) { //非空
for(File f:files){
if(f.isFile()) {
f.delete();//删除文件
}else {//目录
delDir(f);//递归
}
}
}
dir.delete();//直接删除目录
}
public static void main(String[] args) {
// File f1=new File("D:\\a\\b\\c\\d\\1.txt");
// File f2=new File("D:\\a");
// System.out.println(FileUtils.fileCopy(f1, f2));
File f1=new File("D:\\JAVA73\\Java基础课件");
File f2=new File("D:\\aa");
FileUtils.copyDir(f1, f2);
//FileUtils.copyDir(new File("D:\\JAVA73\\Java基础课件"), new File("D:\\aa"")));//代表87-89行代码的另一种写法
FileUtils.delDir(new File("D:\\Java基础课件"));//删除原目录
}
}
java 实现文件夹的复制+删除原文件
最新推荐文章于 2024-07-14 13:21:09 发布