Java基础(五十二)-IO编程

File文件操作类

背景:

在Java语言里面提供有对于文件操作系统的支持,而这个支持就在java.io.File类中进行了定义,也就是说在整个java.io包里面,File类是唯一一个于文件本身操作(创建,删除,重命名等等)有关的类,而如果要想进行File类的操作,必须要提供有完整的路径,而后可以调用相应的方法进行处理。

1:File类的基本使用

在这里插入图片描述

2:使用File类创建一个文件夹(d:mldn.txt)

import java.io.File;

public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("d:\\mldn.txt");
		if (file.exists()) {
			file.delete();// 删除文件
		} else { // 文件不存在
			System.out.println(file.createNewFile()); // 创建新的文件
		}
	}
}
//true

在这里插入图片描述

import java.io.File;

public class Test {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "mldn.txt");
		if (file.exists()) {
			file.delete();// 删除文件
		} else { // 文件不存在
			System.out.println(file.createNewFile()); // 创建新的文件
		}
	}
}
//true

2:File类操作深入

在这里插入图片描述

在这里插入图片描述

2,在使用File类进行文件处理的时候需要注意的是:程序->JVM->操作系统函数->文件处理;

所以在进行同一文件的反复删除或者创建的时候有可能会出现延迟的问题,所以这个时候做i好的方案是类别重名;

在这里插入图片描述

import java.io.File;

public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "hello" + File.separator + "demo" + File.separator + "message"
				+ File.separator + "mldn.txt");
		if (!file.getParentFile().exists()) {	// 父路径不存在
			file.getParentFile().mkdirs() ; // 创建父路径
		}
		if (file.exists()) {
			file.delete();// 删除文件
		} else { // 文件不存在
			System.out.println(file.createNewFile()); // 创建新的文件
		}
	}
}
//true

在这里插入图片描述

3:获取文件信息

在这里插入图片描述

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

class MathUtil {
	private MathUtil() {
	}

	public static double round(double num, int scale) {
		return Math.round(Math.pow(10, scale) * num) / Math.pow(10, scale);
	}
}

public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "my.jpg");
		System.out.println("文件是否可读:" + file.canRead());
		System.out.println("文件是否可写:" + file.canWrite());
		System.out.println("文件大小:" + MathUtil.round(file.length() / (double) 1024 / 1024, 2));
		System.out.println(
				"最后的修改时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
		System.out.println("是目录吗?" + file.isDirectory());
		System.out.println("是文件吗?" + file.isFile());
	}
}

4:列出文件内容

在这里插入图片描述

import java.io.File;

public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator);
		if (file.isDirectory()) {	// 当前是一个目录
			File result [] = file.listFiles() ; // 列出目录中的全部内容
			for (int x = 0 ; x < result.length ; x ++) {
				System.out.println(result[x]);
			}
		}
	}
}
//运行结果
d:\$RECYCLE.BIN
d:\00MVC-EF-master
d:\2017.11.24
d:\2018.10.26
d:\2018.10.3 BAT不是梦
d:\2018.3.5杰哥分享的视频
d:\app
d:\BaiduNetdisk
d:\BaiduNetdiskDownload
d:\Baofeng
d:\BAT算法与数据结构
d:\C#学习笔记.docx
d:\CAJ
d:\Dict
d:\Eclipse
d:\Foxit Phantom
d:\Foxit Reader
d:\Git
d:\hello
d:\isual
d:\mldn.txt
d:\MyDownloads
d:\Oracle
d:\PADS3.19
d:\pagefile.sys
d:\Program Files
d:\Program Files (x86)
d:\ProgramData
d:\QLDownload
d:\qq
d:\QQBrowser
d:\qycache
d:\RAR
d:\SQL Server
d:\SQL Sever
d:\SQLServer2017Media
d:\StormMedia
d:\Sublime Text 3
d:\System Volume Information
d:\Typora
d:\Visual Studio
d:\WebApplication93
d:\Windows Kits
d:\winrar
d:\XMP
d:\大话数据库.pdf
d:\有道云笔记
d:\李铭师兄
d:\电池管理
d:\肖俊

在这里插入图片描述

5:File操作案例:列出指定目录中的全部文件

在这里插入图片描述

import java.io.File;

public class Test {
	public static void main(String[] args) throws Exception {
		File file = new File("D:" + File.separator) ;	// 是一个目录
		listDir(file) ;
	}
	public static void listDir(File file) {
		if (file.isDirectory()) {	// 是一个目录
			File results [] = file.listFiles() ; // 列出目录中的全部内容
			if (results != null) {
				for (int x = 0 ; x < results.length ; x ++) {
					listDir(results[x]) ; // 继续依次判断
				}
			}
		}
		System.out.println(file);	// 获得完整路径
	}
}//运行结果如下图

在这里插入图片描述

在这里插入图片描述


**不要运行这个程序**
import java.io.File;

public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("D:" + File.separator + "mldnjava") ;	// 是一个目录
		listDir(file) ;
	}
	public static void listDir(File file) {
		if (file.isDirectory()) {	// 是一个目录
			File results [] = file.listFiles() ; // 列出目录中的全部内容
			if (results != null) {
				for (int x = 0 ; x < results.length ; x ++) {
					listDir(results[x]) ; // 继续依次判断
				}
			}
		}
		file.delete() ;
	}
}

6:File操作案例:批量修改文件名称

在这里插入图片描述
在这里插入图片描述

import java.io.File;
public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		File file = new File("D:" + File.separator + "test") ;	// 是一个目录
		long start = System.currentTimeMillis() ;
		renameDir(file) ;
		long end = System.currentTimeMillis() ;
		System.out.println("本次操作所花费的时间:" + (end - start));
	}
	public static void renameDir(File file) {
		if (file.isDirectory()) {	// 是一个目录
			File results [] = file.listFiles() ; // 列出子目录中的内容
			if (results != null) {
				for (int x = 0 ; x < results.length ; x ++) {
					renameDir(results[x]) ;
				}
			}
		} else {
			if (file.isFile()) {	// 如果是文件则必须进行重命名
				String fileName = null ; 
				if (file.getName().contains(".")) {
					fileName = file.getName().substring(0,file.getName().lastIndexOf(".")) + ".txt" ;
				} else {
					fileName = file.getName() + ".txt" ;
				}
				File newFile = new File(file.getParentFile(),fileName) ; // 新的文件名称
				file.renameTo(newFile) ; // 重命名
			}
		}
	}
}

在面试的过程中经常会出现给你一个路径而后让你进行名称或文件的批量修改,那么就采用以上的代码结构即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值