淘先锋技术网

首页 1 2 3 4 5 6 7

一.构建file对象

构建file对象也就是将file文件加载到java的变量中。

  • 1.全名称(全路径)构建
String path = "D:/workspace/stsworkspace/IO_study01/微信图片_20210830150520.jpg";
File src = new File(path);		
  • 2.父名称(路径),子名称构建
  • 3.父对象,子名称构建
  • 4.相对路径构建
  • 5.可以构建一个不存在的文件

二.文件,路径方法

  • 获取文件名
  • 获取文件字节数(大小)
    文件夹的长度为0;
  • 获取路径
    构建file时使用相对路径,则返回相对路径;
    构建file时使用绝对路径,则返回绝对路径
  • 获取绝对路径
  • 获取去父路径
    构建file时使用相对路径,则返回null

三.文件,状态方法

  • 判断文件是否存在
  • 判断是否是文件
  • 判断是否是目录
  • 文件状态判断小方法
File src = new File("xxx");
if(null == src || !src.exists()) {
	System.out.println("文件不存在");
}else {
	if(src.isFile()) {
		System.out.println("文件操作");
	}else {
		System.out.println("文件夹操作");
	}
}

四.创建,删除文件方法

  • 创建文件
    文件不存在时创建文件,返回true;
    文件存在时创建失败,返回flase;
    不能创建文件夹;
File src =  new File("D:/workspace/stsworkspace/IO_study01/io.txt");
boolean flag =  src.createNewFile();
  • 删除文件
    删除已经存在的文件
File src =  new File("D:/workspace/stsworkspace/IO_study01/io.txt");
boolean  flag = src.delete();
  • 补充
    con com3…操作系统的关键字不能正常创建;
    下例创建失败
src =  new File("D:/workspace/stsworkspace/IO_study01/con");
src.createNewFile();

五.path定义

当路径被copy到java代码中时,""需要被转义。

不适用转义字符定义path有两种方式:

  • “/” :名称分隔符
  • 常量拼接 File.separatorChar

六.目录方法

  • 创建目录1
    mkdir():确保上级目录存在,不存在则创建文件失败;不推荐使用
File dir = new File("D:/workspace/stsworkspace/IO_study01/sss/poi.txt");
boolean flag = dir.mkdir();
  • 创建目录2
    mkdirs():上级目录可以不存在,不存在一同来创建,推荐使用;
File dir = new File("D:/workspace/stsworkspace/IO_study01/sss/poi.txt");
boolean flag = dir.mkdirs();
  • 列出下一级名称:list()
File dir = new File("D:/workspace/stsworkspace/IO_study01");
String[] subNames = dir.list();
for(String s :subNames) {
	System.out.println(s);
}
  • 列出下一级对象:listFiles()
File dir = new File("D:/workspace/stsworkspace/IO_study01");
File[] subFiles = dir.listFiles();
for(File f :subFiles) {
	System.out.println(f.getAbsolutePath());
}
  • 列出所有盘符:listFiles()
File[] roots = dir.listRoots();
for(File r:roots) {
	System.out.println(r.getAbsolutePath());
}

七.利用递归打印子孙级目录和文件名称

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);//递归体
		}
	}
}

八.使用面向对象:统计文件夹大小

public class DirCount {

	// 字节大小
	private long len;
	// 文件夹路径
	private String path;
	// 文件个数
	private int fileSize;
	// 文件夹个数
	private int dirSize;
	// 文件源
	private File src;

	public DirCount(String path) {
		this.path = path;
		this.src = new File(path);
		count(this.src);
	}

	public long getLen() {
		return len;
	}

	public int getFileSize() {
		return fileSize;
	}

	public int getDirSize() {
		return dirSize;
	}

	private void count(File src) {
		// 获取大小
		if (null != src && src.exists()) {
			if (src.isFile()) {// 大小
				len += src.length();
				this.fileSize += 1;

			} else {// 子孙级
				this.dirSize += 1;
				for (File s : src.listFiles()) {
					count(s);
				}
			}
		}
	}

	public static void main(String[] args) {
		DirCount dir = new DirCount("D:/workspace/stsworkspace/IO_study01");
		System.out.println("文件字节大小:" + dir.getLen());
		System.out.println("文件夹个数:"+ dir.getDirSize());
		System.out.println("文件个数:" + dir.getFileSize());
	}

}