16.1File文件操作

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);
			
		}
	}
}
}

执行结果
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章