创建目录,如果父目录链不存在一同创建
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
//如果目录存在,则两个都可以创建成功
}
}
下级文件路径
- 目录的下级名称 ——list()
- 下级File对象——listFiles()
- 根路径——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
}
}