Java的IO_03文件夹的创建_统计文件夹大小

创建目录,如果父目录链不存在一同创建

mkdir()——上一级目录必须存在
mkdirs()——父目录不存在,则创建父目录


package com.io.cx;

import java.io.File;

/**
 * 创建目录
 * 1、mkdir() : 确保上级目录存在,不存在创建失败
 * 2、mkdirs(): 上级目录可以不存在,不存在一同来创建
 */
public class dir1 {
	public static void main(String[] args) {
		File dir = new File("D:/EclipsePlace/IO/dir/text");//该目录不存在
		//创建目录 mkdirs()
		boolean flag = dir.mkdirs();
		System.out.println(flag);//true
		//创建目录 mkdir()
		dir = new File("D:/EclipsePlace/IO/dir/text");
		flag = dir.mkdirs();
		System.out.println(flag);//false
		//如果目录存在,则两个都可以创建成功
	}
}

下级文件路径

  1. 目录的下级名称 ——list()
  2. 下级File对象——listFiles()
  3. 根路径——listRoots()
package com.io.cx;

import java.io.File;

/**
 * 列出下一级
 * 1、list() :列出下级名称——只返回一层
 * 2、listFiles():列出下级File对象
 * 
 * 列出所有的盘符: listRoots()
 */
public class dir2 {
	public static void main(String[] args) {
		File src = new File("D:/EclipsePlace/IO");
		
		//下级名称  list
		String[] subNames = src.list();
		for(String s:subNames) {
			System.out.println(s);
		}
		
		//下级对象  listFiles()
		File[] subFiles = src.listFiles();
		for(File s:subFiles) {
			System.out.println(s.getAbsolutePath());
		}
		
		//所有盘符
		File[] roots = src.listRoots();
		for(File r:roots) {
			System.out.println(r.getAbsolutePath());
		}
	}
}

查看所有子孙级路径

package com.io.cx;

import java.io.File;

/**
 *  递归: 方法自己调用自己 
 *  递归头: 何时结束递归
 *  递归体: 重复调用
 *  打印子孙级目录和文件的名称
 * @author 裴新
 *
 */
public class dir4 {
	public static void main(String[] args) {
		File src =  new File("D:/EclipsePlace/IO");
		printName(src,0);
	}
	//打印打印子孙级目录和文件的名称
	public static void printName(File src,int deep) {
		//控制前面层次
		for(int i=0;i<deep;i++) {
			System.out.print("-");
		}
		//打印名称
		System.out.println(src.getName());	
		if(null ==src || !src.exists()) {  //递归头
			return ;
		}else if(src.isDirectory()) { //目录
			for(File s:src.listFiles()) {
				printName(s,deep+1); //递归体
			}
		}
	}
}

统计文件夹大小

package com.io.cx;

import java.io.File;

/**
 *  统计一个文件夹的大小
 */
public class dir5 {
	public static void main(String[] args) {
		File src =  new File("D:/EclipsePlace/IO");
		count(src);
		System.out.println(len);
	}
	private static long len =0;
	public static void count(File src) {	
		//获取大小
		if(null!=src && src.exists()) {
			if(src.isFile()) {  //大小
				len+=src.length();
			}else { //子孙级
				for(File s:src.listFiles()) {
						count(s);
				}
			}
		}
	}
}

用对象升级代码:

package com.io.cx;

import java.io.File;

/**
 *  使用面向对象: 统计文件夹的大小
 */
public class dir6 {
	private long len;//大小
	private String path;//文件夹路径
	private int fileSize;//文件的个数
	private int dirSize;//文件夹的个数
	private File src;//源
	//构造器
	public dir6(String path) {
		this.path = path;
		this.src = new File(path);
		count(this.src);
	}	
	
	//统计大小
	private  void count(File src) {	
		//获取大小
		if(null!=src && src.exists()) {
			if(src.isFile()) {  //大小
				len+=src.length();
				this.fileSize++;
			}else { //子孙级
				this.dirSize++;
				for(File s:src.listFiles()) {
						count(s);
				}
			}
		}
	}	
	
	public long getLen() {
		return len;
	}

	public int getFileSize() {
		return fileSize;
	}

	public int getDirSize() {
		return dirSize;
	}
	
	public static void main(String[] args) {
		dir6 dir = new dir6("D:/EclipsePlace/IO");		
		System.out.println(dir.getLen()+"-->"+"文件"+dir.getFileSize()+"-->"+"文件夹"+dir.getDirSize());
		//94298-->文件33-->文件夹10
		dir6 dir2 = new dir6("D:/EclipsePlace/IO/src");		
		System.out.println(dir2.getLen()+"-->"+"文件"+dir2.getFileSize()+"-->"+"文件夹"+dir2.getDirSize());
		//包含自身——9520-->文件14-->文件夹4
	}	


	
	
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值