File类的应用--拷贝



拷贝一个目录,包括里面的文件,要用到递归.也就是函数本身调用自身.

递归要注意:

1,限定条件,结束递归

2,要注意递归的次数,尽量避免内存溢出


思路:1,在拷贝的位置先创建目

         2,遍历时不是文件,是文件则直接拷贝过去

不是文件则递归,创建目录,再对目录中的文件在进行判断


public class CopyDir {


/**
* @param args
*/
public static void main(String[] args) throws Exception {
File src = new File("F:/java/day21.1");
File dest = new File("F:");
copyDir(src, dest);
}


public static void copyDir(File src, File dest) throws Exception {
// 获取要创建的文件夹的路径
File newDir = new File(dest, src.getName());
// 在指定路径下创建新的文件夹
newDir.mkdir();
// 获取源文件中该文件夹中的文件
File[] arr = src.listFiles();
// 遍历
for (File file : arr) {
// 判断是否是文件,若是文件则直接拷贝
if (file.isFile())
// 拷贝到新创建的目录下
copyFile(file, new File(newDir, file.getName()));
if (file.isDirectory())
//是文件夹则递归
copyDir(file, newDir);
}
}

//拷贝文件
private static void copyFile(File src, File dest) throws IOException {
try (InputStream is = new FileInputStream(src);
OutputStream os = new FileOutputStream(dest);) {
byte[] buff = new byte[1024];
int len;
while ((len = is.read(buff)) != -1) {
os.write(buff, 0, len);
}
}
}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值