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版本下结果是这样,如果你的版本也是这个但是统计结果不同,请留言,探讨下谁的代码有问题

  • 相关阅读:
    ios UIWebView截获html并修改便签内容(转载)
    IOS获取系统时间 NSDate
    ios 把毫秒值转换成日期 NSDate
    iOS  如何判断当前网络连接状态  网络是否正常  网络是否可用
    IOS开发 xcode报错之has been modified since the precompiled header was built
    iOS系统下 的手机屏幕尺寸 分辨率 及系统版本 总结
    iOS 切图使用 分辨率 使用 相关总结
    整合最优雅SSM框架:SpringMVC + Spring + MyBatis 基础
    Java面试之PO,VO,TO,QO,BO
    Notes模板说明
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7256577.html
Copyright © 2011-2022 走看看