前言
前面基本已经将io的大部分内容说完了,本篇文章呢,主要是为了练习前面的前面的知识点,加深对io的里的理解
题目
思路
- 首先使用递归的思路遍历文件夹里的所有东西,并判断是文件还是文件夹
- 使用所有文件的世界都是字节的特性,使用字节输入流进行读取
- 读取的同时使用字节输出流进行复制文本
- 复制完成后直接删除文件
代码实现
public static void main(String[] args) throws Exception{
File srcfile=new File("D:\\codes\\zuoye10");
File desfile=new File("D:\\zuoye10");
copyDir(srcfile,desfile);
srcfile.delete();
}
//复制文件夹
public static void copyDir(File srcfile,File desfile) throws IOException {
if(!desfile.exists()){
desfile.mkdirs();
}
File[] files = srcfile.listFiles();
for(File file:files){
if(file.isFile()){
copyFile(file,new File(desfile,file.getName()));
}else if(file.isDirectory()){
copyDir(file,new File(desfile,file.getName()));
file.delete();
}
}
}
//文件的复制
public static void copyFile(File srcfile,File desfile) throws IOException{
//读写文件
FileInputStream fis=new FileInputStream(srcfile);
FileOutputStream fos=new FileOutputStream(desfile);
BufferedInputStream bis = new BufferedInputStream(fis);//测试缓冲
BufferedOutputStream bos = new BufferedOutputStream(fos);
int len;
byte[] bys=new byte[10];
while((len=bis.read(bys))!=-1){
bos.write(bys, 0, len);
bos.flush();
}
bos.close();
bis.close();
fos.close();
fis.close();
srcfile.delete();
}
结束