课后作业----计算文件的大小

 

经过几天的学习,对文件的知识了解了一些。现在来完成课后作业

 

思路:获取文件的大小,即文件名.length() (即字节长度),但是该方法只适用于文件,而不适用于文件夹,如果用于文件的话则,返回的长度为0.

  补充:文件名.length()为0有两种情况:(1):该文件不存在(2):该文件是文件夹

  所以,再求文件的大小,既要考虑文件是否存在,也要考虑是否为文件夹,如果是文件夹的话,则需要把它的子文件求出,可用文件名.listFiles()方法,但是记住,该方法只是返回一层文件,有可能你的子文件也是文件夹,所以这个时候就需要递归方法。

  补充:文件.list()方法是获取子文件的文件名,也是一层。

 

package com.testHomework;

import java.io.File;

public class getFileLength {
    public static void main(String[] args) {
        
        // 获取文件
        File file = new File("E:/QQ文件");
        long length = getLength(file);
        System.out.println(length);
    }
    static long length = 0;
    public static long getLength(File file) {
        /*
         *  long length = 0; 
         *   这是错误的代码
         */
        if(null!=file&&file.exists()) {
            if(file.isFile()) { // 如果是文件,则获取文件的大小
                length += file.length();
            }else { //如果是文件夹的化,则获取取子孙文件
                File[] subfiles = file.listFiles();
                // 遍历子孙文件
                for(File f:subfiles) {
                    getLength(f);
                }
            }
        }
        return length;
    }
}

 

 

上代码:运行结果:  文件大小:

 

 

 

 

代码反思:刚开始写时,返回的长度一直为0,原因是我把length变量放到方法里,以至于它每次调用函数执行一次赋0的操作。

 

 

 

 

posted @ 2019-11-08 10:04  littlemelon  阅读(318)  评论(0编辑  收藏  举报