代码示例:
package cn.zxj.com;
import java.io.*;
/*
用缓冲流实现:从键盘接收两个文件夹路径,把其中一个文件夹中的内容拷贝到另一个文件夹中
*/
class Test {
public static void main(String[] args)
{
File fileCatalogueSrc = new File("C:\\Users\\jz20kf\\Desktop\\src");
File fileCatalogueGoal = new File("C:\\Users\\jz20kf\\Desktop\\go");
if(!fileCatalogueSrc.exists()){
System.out.print("源目录不存在");
return;
}
if(!fileCatalogueGoal.exists()){
fileCatalogueGoal.mkdirs();
}
copyCatalogue(fileCatalogueSrc,fileCatalogueGoal);
System.out.println("copy 完成");
}
private static void copyCatalogue(File fileCatalogueSrc, File fileCatalogueGoal) {
FileReader fileReader = null;
BufferedReader bufferedReader = null;
FileWriter fileWriter = null;
BufferedWriter bufferedWriter = null;
try{
File[] files = fileCatalogueSrc.listFiles();
for(File f:files){
if(f.isDirectory()){
File src = new File(fileCatalogueSrc, f.getName());
File go = new File(fileCatalogueGoal, f.getName());
if(!go.exists()){
go.mkdirs();
}
copyCatalogue(src,go);
}else {
File f1 = new File(fileCatalogueSrc, f.getName());
File f2 = new File(fileCatalogueGoal, f.getName());
fileReader = new FileReader(f1);
bufferedReader = new BufferedReader(fileReader);
fileWriter = new FileWriter(f2);
bufferedWriter = new BufferedWriter(fileWriter);
char[] chars = new char[1024];
int len;
while((len=(bufferedReader.read(chars)))!=-1){
bufferedWriter.write(chars,0,len);
bufferedWriter.flush();
}
}
}
}catch (Exception e){
e.printStackTrace();
throw new RuntimeException(e.toString());
}finally {
try{
bufferedWriter.close();
fileWriter.close();
bufferedReader.close();
fileReader.close();
}catch (Exception e){
throw new RuntimeException(e.toString());
}
}
}
}