16.1.1File类文件基本操作
java.io.File类是一个与文件本身操作有关的类,此类可以实现文件创建、删除、重命名、取得文件大小、修改日期等常见的系统文件操作
File类文件基本操作方法
范例:使用File类实现文件的创建与删除
import java.io.File;
import java.io.IOException;
public class JavaIODemo396 {
public static void main(String[] args) throws IOException {
File file=new File("E:\\File\\ll.txt");
if(file.exists()) { //判断是否存在。
file.delete(); //存在删除
}else {
System.out.println(file.createNewFile()); //不存在创建
}
}
}
执行结果
16.1.2File类深入操作
路径分隔符:public static final String separator,在不同操作系统可以获取不同的分隔符。
File file = new File("d:" + File.separator + "ll.txt");
使用File类创建文件时必须保证父路径存在。当前的程序是直接在根路径下进行文件创建,所以用户可以直接使用creatNewFile()方法创建文件。如果此时文件需要保存在特定目录中,则必须先创建父目录后才可以进行文件创建。
File类操作父目录
范例:创建带目录的文件
import java.io.File;
import java.io.IOException;
public class JavaIODemo397 {
public static void main(String[] args) throws IOException {
File file=new File("E:"+File.separator+"File"+File.separator+"liu"+File.separator+"520.txt");//操作文件路径
if(!file.getParentFile().exists()) { //父路径目录不存在
file.mkdirs(); //创建父目录
}
if(file.exists()) {
file.delete();
}else {
System.out.println(file.createNewFile());
}
}
}
执行结果
E:\File\liu
16.1.3获取文件信息
获取文件元数据信息
范例:获取文件基础信息
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class JavaIODemo398 {
public static void main(String[] args) {
File file=new File("E:"+File.separator+"File"+File.separator+"ll.txt");
System.out.println("文件是否可读:"+file.canRead());
System.out.println("文件是否可写:"+file.canWrite());
System.out.println("文件大小:"+MathUtil.round(file.length()/(double)1024/1024, 2)+"M");
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());
}
}
class MathUtil{
private MathUtil() {}
public static double round (double num,int scale) {
return Math.round(Math.pow(10, scale)*10)/Math.pow(10, scale);
}
}
执行结果
文件是否可读:true
文件是否可写:true
文件大小:10.0M
最后修改时间:2020-06-26 11:33:11
是目录吗?false
是文件吗?true
在获取文件长度以及最后修改日期时返回的数据类型都是long,所以需要进行相应的转换才可以方便阅读
范例:列出目录组成
import java.io.File;
import javafx.scene.control.Separator;
public class JavaIODemo399A {
public static void main(String[] args) {
File file=new File("E:"+File.separator);// 文件路径
if(file.isDirectory()) {
File [] result=file.listFiles();
for(int x=0;x<result.length;x++) {
System.out.println(result[x]);
}
}
}
}
执行结果
E:\$RECYCLE.BIN
E:\.temp
E:\360Downloads
E:\360游戏管家辉煌时刻
E:\360用户文件
E:\4759e212a66c9e45ffe04ed9d43e3529
E:\a12a081aa4ac09878f42668233136844
E:\apache
E:\chrome
E:\Chrome浏览器
E:\Download
E:\downloads
E:\DragonTV.cache
E:\eclipse
E:\editpius
E:\File
E:\FSCapture
E:\GoLink
E:\ideaIE-2020.1
E:\javajdk
E:\keil5
E:\MATLAB
E:\MyDownloads
E:\MyRedis
E:\Mysql
E:\MyXsell6
E:\Navicat
E:\pdf
E:\Program Files
E:\Program Files (x86)
E:\qycache
E:\RHCSA认证考试
E:\start
E:\steam
E:\System Volume Information
E:\tengxunhuiyi
E:\WeGame
E:\Youku Files
E:\安装包
E:\录屏
E:\英雄时刻
E:\飞鸽
16.1.4文件列表显示
一个磁盘中的文件目录非常庞大,经常会出现目录嵌套操作,如果想要列出一个目录的全部组成,就可以利用File类并结合递归的操作形式实现。
范例:列出目录组成
import java.io.File;
public class JavaIODemo399B {
public static void main(String[] args) {
File file =new File("E:"+File.separator);
listDir(file);
}
private static void listDir(File file) {
if(file.isDirectory()) {
File [] result=file.listFiles();
if(result!=null) {
for(int x=0;x<result.length;x++) {
listDir(result[x]);;
}
}
}
System.out.println(file);
}
}
执行结果
E:\360用户文件\游戏大厅\14912\.minecraft\assets\objects\c0\c0caa238bb45a074c117869eef193290fc27fb59
E:\360用户文件\游戏大厅\14912\.minecraft\assets\objects\c0
E:\360用户文件\游戏大厅\14912\.minecraft\assets\objects\c1\c109b985a7e6d5d3828c92e00aefa49deca0eb8c
E:\360用户文件\游戏大厅\14912\.minecraft\assets\objects\c1\c12f2e63231e761700694081d39aa47b0d533605
E:\360用户文件\游戏大厅\14912\.minecraft\assets\objects\c1\c157c56846f0e50620f808fecd9d069423dd6c41
E:\360用户文件\游戏大厅\14912\.minecraft\assets\objects\c1\c18fb5eacf0fdb33c05eb806bc41332cccee43d8
文件列表显示
16.1.5文件批量改名
范例:文件批量改名
import java.io.File;
public class JavaIODemo401 {
public static void main(String[] args) {
File file=new File("E:"+File.separator+"File");//给定目录
renameDir(file);
}
private static void renameDir(File file) {
if(file.isDirectory()) {
File [] result=file.listFiles();
if(result!=null) {
for(int x=0;x<result.length;x++) { //循环列出子路径
renameDir(result[x]);;
}
}
}else { //路径为文件
String fileName=null; //文件名称
if(file.getName().endsWith(".txt")) { //是否以.txt为后缀
fileName=file.getName().substring(0,file.getName().lastIndexOf("."))+".java";
File newFile=new File(file.getParent(),fileName); //新的文件名称
file.renameTo(newFile);
}
}
}
}
执行结果