有些时候我们要用到递归来处理一些业务,对于递归一定要有出口。
下面使用递归来实现把d盘的一个文件夹复制到c盘。
直接可用。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class copyFile {
public static void main(String[] args) {
//复制d盘文件到C盘
File f=new File("D:/1");
copyMethod(f);
}
private static void copyMethod(File f) {
if(f.isFile()){
String filePath=f.getAbsolutePath();
String newPath="C"+filePath.substring(1);
File parentFile = new File(newPath).getParentFile();
if(!parentFile.exists()){
parentFile.mkdirs();
}
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis=new FileInputStream(filePath);
fos=new FileOutputStream(newPath);
byte[] bytes=new byte[1024];
int len=0;
while((len=fis.read())!=-1){
fos.write(bytes, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fos!=null){
//这里的流一定要及时关闭。并且不建议将两个流的关闭放在一个try{}catch(Execption e){}中。
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return; //最后一定要记得。
}
File[] fs=f.listFiles();//如果目录就取出list。
for (File subf:fs) {
copyMethod(subf);
}
}
}