File类结构解析

File类的作用,将操作系统中的文件封装成对象,并提供相应的操作文件对象的方法。

如何将文件封装成File对象?

将文件路径传入构造方法即可File (String pathname),这里的pathname对应文件的路径。File类中封装了一个String类型的变量path,用来存储pathname。部分源码如下:

public class File{

  private final String path;

  public File(String pathname) {
        if (pathname == null) {
            throw new NullPointerException();
        }
        this.path = fs.normalize(pathname);
        this.prefixLength = fs.prefixLength(this.path);
   }
  //省略操作该文件对象的方法。
}

通过源码可以看出,File类与我们所学的Student类,结构一样。回想一下Student类,封装了一个String类型的变量name,提供用于初始化name的构造方法,剩下来的就是操作该属性的方法。不同的地方是,File类内部封装了很多与操作系统交互的功能,而这点我们无需关心。

封装完成之后,接下来,只需要调用File类的各种方法对其操作即可。

递归删除文件夹

背景:File类的delete方法只能删除文件或者空文件夹。

第一步,递归删除文件夹内的所有文件,得到主文件夹与子文件夹皆为空。

第二步,递归删除所有目录。

综合步骤一、二,即可删除。

public class FileTest {
    public static void main(String[] args) {
        File f = new File("j:/1");
        deleteAll(f);
    }

    /**
     * 综合如下步骤一、二,递归删除
     * @param f
     */
    public static void deleteAll(File f) {
        //判断是否为文件
        if(f.isFile()) {
            f.delete();
            return;
        }

        deleteAllFiles(f);//删除所有文件
        deleteAllDir(f);//删除所有目录
    }

    /**
     * 第一步,删除所有File(文件)
     * @param f
     * parameter
     */
    private static void deleteAllFiles(File f) {
        File[] fs = f.listFiles();

        for (File file : fs) {
            if (file.isFile())
                file.delete();
            else
                deleteAllFiles(file);
        }
    }

    /**
     * 第二步,删除所有的Directory(目录)
     * @param f
     */
    private static void deleteAllDir(File f) {
        File[] fs = f.listFiles();

        if(fs.length==0) {
            f.delete();
        }
        else {
            for(File file: fs)
                deleteAllDir(file);
        }

        f.delete();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值