1. 删除一个非空的目录 2. 移动一个非空的目录到另一个地方(剪切)。

// 1,删除一个非空的目录。并加强健壮性
    private static void deleteFile(File file) {
        if (!file.exists()) {
            System.out.println("路径不存在");
            return;
        }
        if (!file.isDirectory()) {
            System.out.println("不是目录");
            return;
        }
        // 如果当前目录中有子目录和文件,先删除子目录和文件
        File[] listFiles = file.listFiles();
        for (File f : listFiles) {
            if (f.isFile()) {
                f.delete();
            } else if (f.isDirectory()) {
                deleteFile(f);
            }
        }
        // 删除当前目录
        file.delete();

    }
0o 
练习2:
使用File类的renameTo 方法和递归实现非空目录的剪切.
public static void main(String[] args) throws IOException {

        File src = new File("c:\\abc");
        File dest = new File("d:\\");
        cutFile(src, dest);

    }

    // 移动一个非空的目录到另一个地方(剪切)。
    private static void cutFile(File srcDir, File dest) throws IOException {
        if (!srcDir.exists() || !dest.exists()) {
            System.out.println("指定的源目录或者目标目录不存在");
            return;
        }
        if (!srcDir.isDirectory() || !dest.isDirectory()) {
            System.out.println("指定的源目录或者目标目录不是目录");
            return;
        }

        // 得到源目录名
        String srcDirName = srcDir.getName(); // abc
        // 根据源目录名创建新目录名
        File destDir = new File(dest + srcDirName); // d:\\abc dest 为父路径
                                                    // srcDirName 为子路径
        // 创建目标目录
        destDir.mkdir();

        // 遍历源目录
        File[] listFiles = srcDir.listFiles();

        for (File f : listFiles) {
            // 如果是子源文件,使用renameTo方法,移动至目标目录中(该方法同时会删除源目录中的文件)
            if (f.isFile()) {
                f.renameTo(new File(destDir, f.getName())); // 指定目标文件的父目录,文件名(根据源文件名生成).
            } else if (f.isDirectory()) {
                // 如果是子目录,执行重复动作. 将源子目录 , 目标目录(父目录+//)
                cutFile(f, new File(destDir, File.separator)); // 指定源目录,指定目的路径d:\\abc\\
            }
        }
        // 删除源目录
        srcDir.delete();

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值