javaIO流学习 2019.2.20

本文深入讲解了Java中文件和目录的操作方法,包括使用mkdir()和mkdirs()创建目录,list()和listFiles()列出目录内容,以及如何计算文件夹的大小、文件数和子目录数。通过递归算法和面向对象的方式,提供了计算文件夹大小的多种实现。

创建文件夹:

mkdir()创建目录时需确保具备上级目录,否则创建失败

mkdirs()上级目录可以不存在,不存在则一起被创建

同样会返回true或false

 

列出下一级:

list()列出下级名称  只是名称

listFiles() 列出下级File对象  即是路径

File[] subNames=dir.listFiles()

 

简单的打印目录名和文件名  有两个版本的

import java.io.File;


public class test2 {
    
    public static void main(String[] args) {
        File src=new File("d:/作业");
        printName(src,0);
        }
public static void printName(File src,int deep) {
    for(int i=0;i<deep;i++) {
        System.out.print("-");
    }
    System.out.println(src.getName());
    if(src==null||!src.exists())
    return;
    else if(src.isDirectory()) {
        for(File s:src.listFiles()) {
            printName(s,deep+1);
        }
    }
}
}

 

计算文件夹的大小

import java.io.File;

public class FileTree {
    public static void main(String[] args) {
        File f=new File("d:/作业");
        printFile(f,0);
    }
    static void printFile(File file,int level) {
        for(int i=0;i<level;i++) {
            System.out.print("-");
        }
        System.out.println(file.getName());
        
        if(file.isDirectory()) {
            File[] files=file.listFiles();
            for(File temp:files) {
                printFile(temp,level+1);
            }
        }
    }
}

用递归的方法计算文件夹的大小(字节形式)

 

import java.io.File;

public class test3 {
    public static void main(String[] args) {
        File src=new File("d:/作业");
        count(src);
        System.out.println(len);
    }
    private static long len=0;
    public static void count(File src) {
        //获取大小
        if(src==null||src.exists()) {
            if(src.isFile()) {//大小
                len+=src.length();
                
            }else {//子孙级
                for(File s:src.listFiles()) {
                    count(s);
                }
            }
        }
    }
}

 

计算文件夹大小,文件夹数量和文件数(面向对象版)

import java.io.File;

public class test4 {
    //大小
    private long len;
    //文件夹
    private String path;
    //File源对象
    private File src;
    //文件个数
    private int fileSize;
    //文件夹个数
    private int dirSize;
    public test4(String path) {
        this.path=path;
        this.src=new File(path);
        count(this.src);//计数开始
    }
    
    public static void main(String[] args) {
        test4 dir=new test4("d:/作业");
        System.out.println("文件夹大小:"+dir.getLen());
        System.out.println("文件个数:"+dir.getFileSize());
        System.out.println("文件夹个数:"+dir.getDirSize());//包含父文件夹本身
    }
    private void count(File src) {
        //获取大小
        if(src==null||src.exists()) {
            if(src.isFile()) {//大小
                len+=src.length();
                this.fileSize++;//计算文件个数
            }else {//子孙级
                for(File s:src.listFiles()) {
                    this.dirSize++;//计算文件夹个数
                    count(s);
                }
            }
        }
    }

    public long getLen() {
        return len;
    }

    public int getFileSize() {
        return fileSize;
    }

    public int getDirSize() {
        return dirSize;
    }
     
}

 

面向对象入门:首先需要创建构造器,其次在处理数据和方法时要搞清楚哪些是适合用private来进行封装保护的,

然后是要使用set()和get()方法来向已封装好的对象传值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值