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);
}
}
}
}
執行結果