经过几天的学习,对文件的知识了解了一些。现在来完成课后作业
思路:获取文件的大小,即文件名.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的操作。