您的位置:首页 > 编程语言 > Java开发

java 获取文件夹大小,文件大小,文件个数

2013-07-29 13:41 337 查看
package tony;

import java.io.File;

import java.text.DecimalFormat;

import java.io.FileInputStream;

public class GetFileSize

{

    public long getFileSizes(File f) throws Exception{//取得文件大小

        long s=0;

        if (f.exists()) {

            FileInputStream fis = null;

            fis = new FileInputStream(f);

           s= fis.available();

        } else {

            f.createNewFile();

            System.out.println("文件不存在");

        }

        return s;

    }

    // 递归

    public long getFileSize(File f)throws Exception//取得文件夹大小

    {

        long size = 0;

        File flist[] = f.listFiles();

        for (int i = 0; i < flist.length; i++)

        {

            if (flist[i].isDirectory())

            {

                size = size + getFileSize(flist[i]);

            } else

            {

                size = size + flist[i].length();

            }

        }

        return size;

    }

    public String FormetFileSize(long fileS) {//转换文件大小

        DecimalFormat df = new DecimalFormat("#.00");

        String fileSizeString = "";

        if (fileS < 1024) {

            fileSizeString = df.format((double) fileS) + "B";

        } else if (fileS < 1048576) {

            fileSizeString = df.format((double) fileS / 1024) + "K";

        } else if (fileS < 1073741824) {

            fileSizeString = df.format((double) fileS / 1048576) + "M";

        } else {

            fileSizeString = df.format((double) fileS / 1073741824) + "G";

        }

        return fileSizeString;

    }

   

    public long getlist(File f){//递归求取目录文件个数

        long size = 0;

        File flist[] = f.listFiles();

        size=flist.length;

        for (int i = 0; i < flist.length; i++) {

            if (flist[i].isDirectory()) {

                size = size + getlist(flist[i]);

                size--;

            }

        }

        return size;

    }

   

    public static void main(String args[])

    {

        GetFileSize g = new GetFileSize();

        long startTime = System.currentTimeMillis();

        try

        {

            long l = 0;

            String path = "C:\\WINDOWS";

            File ff = new File(path);

            if (ff.isDirectory()) { //如果路径是文件夹的时候

                System.out.println("文件个数           " + g.getlist(ff));

                System.out.println("目录");

                l = g.getFileSize(ff);

                System.out.println(path + "目录的大小为:" + g.FormetFileSize(l));

            } else {

                System.out.println("     文件个数           1");

                System.out.println("文件");

                l = g.getFileSizes(ff);

                System.out.println(path + "文件的大小为:" + g.FormetFileSize(l));

            }

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: