zoukankan      html  css  js  c++  java
  • JavaIO统计一个文件夹,文件,文件夹,所有字节的大小

    这里以我的JDK文件夹为例:

    package com.data.io;
    
    import java.io.File;
    /**
     * App.java
     * @author Administrator
     *
     */
    public class App {
        public static void main(String[] args) {
            File file = new File("G:/jdk1.8.0_131");
            FileInfo info = Model.getFileInfo(file);
            info.print();
        }
    }
    package com.data.io;
    import java.io.*;
    /**
     * FileInfo.java 
     * 文件信息
     * @author Administrator
     *
     */
    public class FileInfo {
        /**
         * 文件(目录)的大小 (字节)
         */
        private long size;
        private int fileSize;
        private int folderSize;
        private File file;
        
        public FileInfo(File file) {
            this.file = file;
        }
        public long getSize() {
            return size;
        }
        public void setSize(long size) {
            this.size = size;
        }
        public int getFileSize() {
            return fileSize;
        }
        public void setFileSize(int fileSize) {
            this.fileSize = fileSize;
        }
        public int getFolderSize() {
            return folderSize;
        }
        public void setFolderSize(int folderSize) {
            this.folderSize = folderSize;
        }
    
        
        public void print() {
            System.out.printf("文件:%s
    ",file.getAbsolutePath());
            System.out.printf("大小: %,d
    ",size);
            System.out.printf("目录: %,d
    ",folderSize);
            System.out.printf("文件: %,d
    ",fileSize);
        }
        
        
        
    }
    package com.data.io;
    
    import java.io.*;
    import java.awt.*;
    
    import javax.naming.directory.DirContext;
    import javax.swing.*;
    /**
     * Model.java
     * @author Administrator
     *
     */
    public class Model {
    	/**
    	 * 
    	 * @param file
    	 * 			目标文件
    	 * @return FileInfo 文件的统计信息
    	 */
    	public static FileInfo getFileInfo(File file) {
    		FileInfo info = new FileInfo(file);
    		
    		info.setSize(countSize(file));
    		info.setFileSize(countFileSize(file));
    		info.setFolderSize(countFolderSize(file));
    		return info;
    	}
    
    	private static int countFolderSize(File dir) {
    		int size = 0;	
    		
    		// 获得目录中的所有内容
    		File[] files = dir.listFiles();
    		//遍历
    		for(File f : files) {
    			if(f.isDirectory()) {
    				//文件夹则加一
    				size++;	
    				//进入该目录,统计目录中文件夹的数量
    				//注意不能只写countFileSize(f),这样每层都有一个新的size
    				size += countFolderSize(f);
    			}
    		}
    		return size;
    	}
    
    	private static int countFileSize(File dir) {
    		int size = 0;	
    		
    		// 获得目录中的所有内容
    		File[] files = dir.listFiles();
    		
    		for(File f : files) {
    			if(f.isFile()) {
    				//文件则加一
    				size++;
    	
    			}else {
    				//目录:进入该目录,统计目录中文件的数量
    				size += countFileSize(f);
    			}
    		}
    		
    		return size;		
    		
    	}
    
    	private static long countSize(File dir) {
    		long size = 0;
    		
    		// 获得目录中的所有内容
    		File[] files = dir.listFiles();
    		
    		for(File f : files) {
    			if(f.isFile()) {
    				//文件
    				long s = f.length();
    				size += s;
    			}else {
    				//目录
    				size += countSize(f);
    			}
    		}
    		
    		return size;
    	}
    }	
    

     统计结果:

    文件:G:jdk1.8.0_131
    大小: 458,125,906
    目录: 619
    文件: 9,196

    我的jdk版本下结果是这样,如果你的版本也是这个但是统计结果不同,请留言,探讨下谁的代码有问题

  • 相关阅读:
    说说Cookie和Session
    说说SQL Server的数据类型
    Java访问权限控制
    数据库-- 触发器
    关于jni编译32位、64位动态库(Android.mk和Application.mk文件)
    Android中的 init.rc文件简介
    Android系统属性简介
    Android Support 包知识
    Android窗口机制分析与UI管理系统
    Android界面架构(Activity,PhoneWiondow,DecorView)简介
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7029163.html
Copyright © 2011-2022 走看看