JAVA進(jìn)階篇之詳細(xì)了解File文件的常用API
1.0 File 文件的說(shuō)明
在 Java 中,F(xiàn)ile 類(lèi)是用于操作文件和文件夾的類(lèi)。它提供了一系列的方法,可以用于創(chuàng)建、刪除、重命名、查詢(xún)文件和目錄的信息等操作。
2.0 如何創(chuàng)建 File 類(lèi)的對(duì)象
一般都是通過(guò)文件路徑創(chuàng)建 File 對(duì)象,注意的是該對(duì)象即可以是文件也可以是文件夾。
常用的三種方式:
(1)使用文件路徑創(chuàng)建 File 對(duì)象、(2)使用目錄路徑和文件名創(chuàng)建 File 對(duì)象、(3)使用父目錄的 File 對(duì)象和文件名創(chuàng)建 File 對(duì)象
代碼如下:
public class NewFile {
public static void main(String[] args) {
//1. 創(chuàng)建文件對(duì)象
File f1 = new File("D:\\software\\aaa\\bbb.txt");
//這樣就可以得到了該路徑的文件對(duì)象了。
//2. 創(chuàng)建文件夾對(duì)象
File f2 = new File("D:\\software\\aaa");
//像這樣就可以得到了該路徑的文件夾對(duì)象了。
//3. 第二種創(chuàng)建文件對(duì)象的方式
// 使用父目錄的 File 對(duì)象和文件名創(chuàng)建 File 對(duì)象
File f3 = new File(f2,"bbb.txt");
//4. 第四種創(chuàng)建文件對(duì)象的方式
// 使用目錄路徑和文件名創(chuàng)建 File 對(duì)象
File f4 = new File("D:\\software\\aaa","bbb.txt");
}
}這些方式都是大致是相同的,表達(dá)都是同一個(gè)意思。
2.1 需要注意的事項(xiàng)
第一個(gè)點(diǎn):File 類(lèi)對(duì)象既可以是文件也可以是文件夾。
第二個(gè)點(diǎn):無(wú)論該路徑上的文件或者文件夾是否存在,都不會(huì)報(bào)錯(cuò),文件或者文件夾存不存在都是可以的創(chuàng)建 File 類(lèi)對(duì)象的。
第三個(gè)點(diǎn):編寫(xiě)路徑的時(shí)候,需要注意的是如果用到了反斜杠,為了防止字符轉(zhuǎn)義,所以需要再加多一條反斜杠進(jìn)行轉(zhuǎn)義為單個(gè)反斜杠。如果用到了正斜桿,就可以單寫(xiě)一條就夠了。還可以用 File 類(lèi)中的方法來(lái)進(jìn)行編寫(xiě)路徑。
代碼如下:
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\bbb.txt");
File f2 = new File("D:/software/aaa/bbb.txt");
File f3 = new File("D:"+File.separator+"software"+File.separator+"aaa"+File.separator+"bbb.txt");
System.out.println(f3.getAbsoluteFile());
}
}運(yùn)行結(jié)果如下:

這三種效果都是相同的,都可以得到該類(lèi)的對(duì)象。
3.0 File 類(lèi)的常用 API
先來(lái)介紹創(chuàng)建、刪除、重命名、查詢(xún)文件和目錄的信息的相關(guān) API。
3.1 如何創(chuàng)建文件或文件夾
createNewFile():創(chuàng)建一個(gè)新的空文件。
代碼如下:
import java.io.IOException;
public class NewFile {
public static void main(String[] args) throws IOException {
//先要定義 File 類(lèi)對(duì)象
File f1 = new File("D:\\software\\aaa\\ccc.txt");
//創(chuàng)建文件
f1.createNewFile();
}
}如果文件不存在的話(huà),就會(huì)創(chuàng)建一個(gè)空文件。需要注意的是,這里會(huì)有編譯異常,需要拋異?;蛘卟东@異常。
mkdir():創(chuàng)建一個(gè)新的目錄。
代碼如下:
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\ddd");
f1.mkdir();
}
}如果文件不存在的話(huà),就會(huì)創(chuàng)建一個(gè)空文件。需要注意的是,只能創(chuàng)建一級(jí)文件夾。
mkdirs():創(chuàng)建一個(gè)多級(jí)目錄。
代碼如下:
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\ddd\\fff\\ggg\\hhh");
f1.mkdir();
}
}這些方法若創(chuàng)建成功都會(huì)返回 boolean 類(lèi)型。
3.2 如何查詢(xún)文件和文件夾的信息
這些查詢(xún)信息的 API 會(huì)比較多,但是很容易上手,直接代碼演示了。
代碼如下:
import java.text.SimpleDateFormat;
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\bbb.txt");
//1.0 判斷當(dāng)前文件對(duì)象,對(duì)應(yīng)的文件路徑是否存在,存在返回true,反之。
System.out.println(f1.exists());
//輸出結(jié)果為:true
//2.0 判斷當(dāng)前文件對(duì)象指代的是否是文件,是文件返回true,反之。
System.out.println(f1.isFile());
//輸出結(jié)果為:true
//3.0 判斷當(dāng)前文件對(duì)象指代的是否是文件夾,是文件返回true,反之。
System.out.println(f1.isDirectory());
//輸出結(jié)果為:false
//4.0 獲取文件的名稱(chēng)(包含后綴)
String name = f1.getName();
System.out.println(name);
//輸出結(jié)果為:bbb.txt
//5.0 獲取文件的大小,返回字節(jié)個(gè)數(shù),返回類(lèi)型為 long 類(lèi)型。
long len = f1.length();
System.out.println(len);
//輸出結(jié)果為:0
//6.0 獲取文件的最后修改的時(shí)間,返回類(lèi)型為 long 類(lèi)型。
long lastTime = f1.lastModified();
System.out.println(lastTime);
//輸出結(jié)果為:1698570082109
//這里可以格式化
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = simpleDateFormat.format(lastTime);
System.out.println(time);
//輸出結(jié)果為:2023-10-29 17:01:22
//7.0 獲取創(chuàng)建文件對(duì)象時(shí),使用的路徑。
String path = f1.getPath();
System.out.println(path);
//輸出結(jié)果為:D:\software\aaa\bbb.txt
//8.0 獲取創(chuàng)建文件對(duì)象時(shí),使用的絕對(duì)路徑。
String absolutePath = f1.getAbsolutePath();
System.out.println(absolutePath);
//輸出結(jié)果為:D:\software\aaa\bbb.txt
}
}
運(yùn)行結(jié)果如下:

3.3 如何刪除文件和文件夾
delete():刪除文件或文件夾。
代碼如下:
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\bbb.txt");
System.out.println(f1.delete());
}
}刪除成功會(huì)返回ture,反之。需要注意的是,只能刪除空文件或者文件夾。
3.4 如何重命名文件和文件夾
renameTo(File dest):重命名文件或文件夾。
代碼如下:
import java.io.File;
public class NewFile {
public static void main(String[] args) {
File f1 = new File("D:\\software\\aaa\\ccc.txt");
File f2 = new File("D:\\software\\aaa\\sss.txt");
System.out.println(f1.renameTo(f2));
}
}如果可以改名成功,會(huì)返回true,反之。
3.5 如何遍歷文件和文件夾名稱(chēng)
list():返回目錄下的所有文件和目錄的名稱(chēng)數(shù)組。
代碼如下:
import java.io.File;
import java.util.Arrays;
public class NewFile {
public static void main(String[] args) {
File f = new File("D:\\software\\code\\2023_java\\2023_java_code");
String[] strings = f.list();
System.out.println(Arrays.toString(strings));
}
}返回的是字符串類(lèi)型的文件名,而不是文件或者文件夾對(duì)象。
3.6 如何遍歷文件和文件夾對(duì)象
listFiles():返回目錄下的所有文件和目錄的File對(duì)象數(shù)組。
代碼如下:
import java.io.File;
import java.util.Arrays;
public class NewFile {
public static void main(String[] args) {
File file = new File("D:\\software\\code\\2023_java\\2023_java_code");
File[] files = file.listFiles();
System.out.println(Arrays.toString(files));
}
}運(yùn)行結(jié)果如下:

得到的是文件或者是文件夾的對(duì)象。
4.0 File 文件搜索
接下來(lái)做個(gè)小項(xiàng)目,F(xiàn)ile 文件搜索,給出盤(pán)符還有目標(biāo)文件,來(lái)通過(guò)遍歷來(lái)找到該目標(biāo)文件的路徑,并且啟動(dòng)起來(lái)。
代碼如下:
import java.io.File;
public class NewFile {
public static void main(String[] args) throws Exception {
fileSearch(new File("D:\\"),"WeChat.exe");
}
public static void fileSearch(File file,String name) throws Exception {
if (file == null || !file.exists() || file.isFile()){
return;
}
File[] files = file.listFiles();
if (files != null) {
for (File f : files) {
if (f.isFile()) {
if (f.getName().contains(name)) {
System.out.println("找到了:" + f.getAbsoluteFile());
Runtime runtime = Runtime.getRuntime();
runtime.exec(f.getAbsolutePath());
}
} else {
fileSearch(f, name);
}
}
}
}
}總結(jié)
到此這篇關(guān)于JAVA進(jìn)階篇之File文件的常用API的文章就介紹到這了,更多相關(guān)JAVA File文件的常用API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳述IntelliJ IDEA提交代碼前的 Code Analysis 機(jī)制(小結(jié))
本篇文章主要介紹了詳述IntelliJ IDEA提交代碼前的 Code Analysis 機(jī)制(小結(jié)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-11-11
Java IText異常NoClassDefFoundError: org/bouncycastle
在使用Java進(jìn)行PDF文檔操作時(shí),iText是一個(gè)非常強(qiáng)大的庫(kù),然而,在實(shí)際開(kāi)發(fā)過(guò)程中,可能會(huì)遇到一些異常情況,其中之一就是??NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable??,本文將探討這個(gè)錯(cuò)誤的原因及其解決方案,需要的朋友可以參考下2025-02-02
關(guān)于kafka消費(fèi)不到遠(yuǎn)程bootstrap-server?數(shù)據(jù)的問(wèn)題
很多朋友遇到kafka消費(fèi)不到遠(yuǎn)程bootstrap-server?數(shù)據(jù)的問(wèn)題,怎么解決這個(gè)問(wèn)題,很多朋友不知所措,下面小編給大家?guī)?lái)了關(guān)于kafka消費(fèi)不到遠(yuǎn)程bootstrap-server?數(shù)據(jù)的問(wèn)題及解決方法,感興趣的朋友跟隨小編一起看看吧2021-11-11
SpringSecurity認(rèn)證授權(quán)全流程解讀
這篇文章主要介紹了SpringSecurity認(rèn)證授權(quán)全流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-06-06
Mybatis-Plus 自動(dòng)填充失效問(wèn)題解決
在使用MyBatis-Plus時(shí),自動(dòng)填充功能可能會(huì)失效,這通常與版本和配置有關(guān),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10
Java 梳理總結(jié)關(guān)于static關(guān)鍵字常見(jiàn)問(wèn)題
static關(guān)鍵字基本概念我們可以一句話(huà)來(lái)概括:方便在沒(méi)有創(chuàng)建對(duì)象的情況下來(lái)進(jìn)行調(diào)用。也就是說(shuō):被static關(guān)鍵字修飾的不需要?jiǎng)?chuàng)建對(duì)象去調(diào)用,直接根據(jù)類(lèi)名就可以去訪(fǎng)問(wèn),讓我們來(lái)了解一下你可能還不知道情況2022-04-04

