zoukankan      html  css  js  c++  java
  • Java IO基础--File常用操作(递归)

    File中经常会使用递归方法打印属性结构、统计文件夹下文件个数、子文件夹个数以及文件大小,可以作为递归的应用练习。
    递归的写法,百度一搜一大堆,这里我使用对javabean方式封装了一下:

    package com.xzlf.io;
    
    import java.io.File;
    
    public class TestCount {
    	private String dir;//文件夹
    	
    	private int length;//文件夹大小
    	
    	private int size;//文件个数
    	
    	private int dirsize = -1;//文件夹个数,只统计子文件夹个数
    	
    	public TestCount(String dir) {
    		super();
    		this.dir = dir;
    	}
    	
    	
    	public int getLength() {
    		return length;
    	}
    
    	public int getSize() {
    		return size;
    	}
    
    
    	public int getDirsize() {
    		return dirsize;
    	}
    
    	/**
    	 * 递归遍历文件夹
    	 * @param dir
    	 * @param deep
    	 */
    	public void printDir(File dir,int deep) {
    		for (int i = 0; i < deep; i++) {
    			System.out.print("-");
    		}
    		System.out.println(dir.getName());
    		if(null == dir || !dir.exists()) {
    			return;
    		}else if(dir.isDirectory()) {
    			dirsize++;
    			File[] listFiles = dir.listFiles();
    			for(File f : listFiles) {
    				printDir(f, deep + 1);
    			}
    		}
    	}
    	
    	/**
    	 * 统计文件夹大小、子文件夹和文件个数
    	 * @param dir
    	 */
    	public void countDir(File dir) {
    		if(dir != null && dir.exists()) {
    			if(dir.isFile()) {
    				size++;
    				length += dir.length();
    			}else {
    				File[] listFiles = dir.listFiles();
    				for (File f : listFiles) {
    					countDir(f);
    				}
    			}
    		}
    		
    	}
    	
    	public static void main(String[] args) {
    		TestCount tc = new TestCount("D:\workspace_eclipse_2019_12\fuxi\reDo");
    		File f = new File(tc.dir);
    		tc.printDir(f, 0);
    		tc.countDir(f);
    		System.out.printf("文件个数:%d%n文件夹大小:%d%n文件大小:%d%n",
    				tc.getSize(),tc.getDirsize(),tc.getLength());
    	}
    }
    
    

    运行测试:
    在这里插入图片描述

    重视基础,才能走的更远。
  • 相关阅读:
    四则运算出题系统,java
    Javaweb测试
    《构建之法》 读书笔记(6)
    使用ProcDump在程序没有响应时自动收集dump
    NASA关于如何写出安全代码的10条军规
    C#和C++中的float类型
    避免在C#中使用析构函数Finalizer
    C#性能优化的一些技巧
    从bug中学习怎么写代码
    Code Smell那么多,应该先改哪一个?
  • 原文地址:https://www.cnblogs.com/xzlf/p/12681539.html
Copyright © 2011-2022 走看看