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

執行結果
在這裏插入圖片描述

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