A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 凝聚 中级黑马   /  2013-10-29 11:13  /  1082 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 凝聚 于 2013-10-30 13:32 编辑

                File dir=new File("D:\\");
                File[]files=dir.listFiles();
                for(File f :files)
                {
                        System.out.println(f.getName()+":::::"+f.length());
                }
这段代码中f.length()这句代码是指谁的长度。怎么有的文件夹有文件和文档之类的东西,但有的怎么显示为0呢。如“FastFood:::::0”

5 个回复

正序浏览
你打印的时候 有的是文件 可以打印其大小 如果是文件夹 那么就不能打印其大小了,而返回由此抽象路径名表示的文件的长度。
我写了个获取文件夹大小的代码你看看,或许对你有用
package com.xyq.IO;
import java.io.File;
import java.util.Scanner;
public class File_Test02 {
/**从键盘接收一个文件夹路径,统计该文件夹大小*/
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                File file=demo01();
                long  length=getFileLength(file);
                System.out.println(length);
                }       
public static File demo01() {
        Scanner sc=new Scanner (System.in);
        System.out.println("请输入一个文件夹名称");
        while (true){
                String line=sc.nextLine();
                File file =new File (line);
                if (!file.exists()){
                        System.out.println("你输入有误,请重新输入");
                }else if(file.isFile()){
                        System.out.println("你输入的是文件,请输入文件夹");
                }else{
                        return file;
                }
                sc.close();
        }
}
        public static long getFileLength(File file){
        File [] arr=file.listFiles();
        long length=0;
        for (File file2 : arr) {
                length+=file2.isFile()?file2.length():getFileLength(file2);
                }
        return length;
        }
}
回复 使用道具 举报
To 金牌黑马 2013-10-29 21:44:34
报纸
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
学习知识的同时要注意技巧。
善用api,学习就会事半功倍哦~
回复 使用道具 举报 1 0
for (File f : files ) 这个是 for 加强,相当于
for (int i=0; i<files.length; i++) {
  File f = files[i];
  System.out.println(f.getName()+":::::"+f.length());
}
你在D盘新建个txt文件,跑一遍代码,那个文件大小必然是 0

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 新人鼓励~

查看全部评分

回复 使用道具 举报
JDK中有解释。如下
返回由此抽象路径名表示的文件的长度。如果此路径名表示一个目录,则返回值是不确定的。 你给的就是个路径。
如果是文件的话,就是字节数。也就是文件大小。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马