前言
前面基本已經将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();
}
結束