Java中File文件操作類的超詳細(xì)使用教程
File類的使用
File的介紹
File的概述:
File類在包java.io.File下、代表操作系統(tǒng)的文件對象(文件、文件夾)。
File類提供了諸如:定位文件,獲取文件本身的信息、刪除文件、創(chuàng)建文件(文件夾)等功能。
注意: File類是不能讀寫文件內(nèi)容。

File創(chuàng)建對象:
| 方法名稱 | 說明 |
|---|---|
| public File(String pathname) | 根據(jù)文件路徑創(chuàng)建文件對象 |
| public File(String parent, String child) | 從父路徑名字符串和子路徑名字符串創(chuàng)建文件對象 |
| public File(File parent, String child) | 根據(jù)父路徑對應(yīng)文件對象和子路徑名字符串創(chuàng)建文件對象 |
File對象可以定位文件和文件夾
File封裝的對象僅僅是一個(gè)路徑名,這個(gè)路徑可以是存在的,也可以是不存在的。
File創(chuàng)建對象演示代碼:
我們常用
File(String pathname)方法創(chuàng)建File對象根據(jù)文件路徑創(chuàng)建File對象(創(chuàng)建的對象可以是文件可以是文件夾)
public static void main(String[] args) {
// 根據(jù)文件的路勁創(chuàng)建File對象
File file1 = new File("/Users/chenyq/Documents/learn_Java/FileTest/jinx.jpg");
File file2 = new File("/Users/chenyq/Documents/learn_Java/FileTest");
// 下面方法暫時(shí)先了解即可
// 輸出文件的字節(jié)大小
System.out.println(file1.length()); // 875326
// 判斷路徑是否存在
System.out.println(file2.exists()); // true
}
File創(chuàng)建對象支持絕對路徑也支持相對路徑:
絕對路徑:從盤符開始
File file1 = new File(“D:\\abc\\a.txt”);
相對路徑:不帶盤符,默認(rèn)直接到當(dāng)前工程下的目錄尋找文件。
File file3 = new File(“模塊名\\a.txt”);
File常用API
判斷文件類型-獲取文件信息
| 方法名稱 | 說明 |
|---|---|
| isDirectory() | 測試此抽象路徑名表示的File是否為文件夾 |
| isFile() | 測試此抽象路徑名表示的File是否為文件 |
| exists() | 測試此抽象路徑名表示的File是否存在 |
| getAbsolutePath() | 返回此抽象路徑名的絕對路徑名字符串 |
| getPath() | 將此抽象路徑名轉(zhuǎn)換為路徑名字符串 |
| getName() | 返回由此抽象路徑名表示的文件或文件夾的名稱 |
| long lastModified() | 返回文件最后修改的時(shí)間毫秒值 |
判斷是否是文件夾或文件
public static void main(String[] args) {
// 創(chuàng)建文件對象
File file = new File("/Users/chenyq/Documents/learn_Java/FileTest/jinx.jpg");
// 判斷是否是文件夾
System.out.println(file.isDirectory()); // false
// 判斷是否是文件
System.out.println(file.isFile()); // true
}
判斷路徑是否存在
public static void main(String[] args) {
// 創(chuàng)建文件對象
File file = new File("/abc/cba");
System.out.println(file.exists()); // false
}
獲取字符串類型的絕對路徑
public static void main(String[] args) {
// 創(chuàng)建文件對象
File file = new File("/Users/chenyq/Documents/learn_Java/FileTest/jinx.jpg");
System.out.println(file.getAbsoluteFile());
// /Users/chenyq/Documents/learn_Java/FileTest/jinx.jpg
}
獲取對象定義時(shí)使用的路勁
public static void main(String[] args) {
// 創(chuàng)建文件對象
File file = new File("/Users/chenyq/Documents/learn_Java/FileTest/jinx.jpg");
System.out.println(file.getPath());
// /Users/chenyq/Documents/learn_Java/FileTest/jinx.jpg
}
獲取文件夾或者文件名
public static void main(String[] args) {
// 創(chuàng)建文件對象
File file = new File("/Users/chenyq/Documents/learn_Java/FileTest/jinx.jpg");
System.out.println(file.getName()); // jinx.jpg
}
獲取文件最后修改時(shí)間的時(shí)間毫秒值
public static void main(String[] args) {
// 創(chuàng)建文件對象
File file = new File("/Users/chenyq/Documents/learn_Java/FileTest/jinx.jpg");
System.out.println(file.lastModified()); // 1666942970207
}
創(chuàng)建文件-刪除文件功能
File類創(chuàng)建文件相關(guān)API:
| 方法名稱 | 說明 |
|---|---|
| createNewFile() | 創(chuàng)建一個(gè)新的空的文件 |
| mkdir() | 只能創(chuàng)建一級(jí)文件夾 |
| mkdirs() | 可以創(chuàng)建多級(jí)文件夾 |
演示代碼:
創(chuàng)建一個(gè)新的空的文件, 創(chuàng)建成功返回true, 創(chuàng)建失敗false
創(chuàng)建文件這個(gè)API幾乎不用, 后面文件都是自動(dòng)創(chuàng)建的
public static void main(String[] args) throws IOException {
File file = new File("/Users/chenyq/Documents/learn_Java/code/file-io-app/src/test.txt");
boolean res = file.createNewFile();
System.out.println(res); // true
}
mkdir()方法, 創(chuàng)建一級(jí)文件夾, 例如
/Users/chenyq/Documents/abc/aaa這個(gè)路徑中當(dāng)aaa前面的路徑都存在才會(huì)創(chuàng)建aaa, 否則創(chuàng)建失敗
public static void main(String[] args) throws IOException {
File file = new File("/Users/chenyq/Documents/abc/aaa");
boolean res = file.mkdir();
// abc文件不存在所以創(chuàng)建失敗
System.out.println(res); // false
}
mkdirs()方法可以創(chuàng)建多級(jí)文件夾, 例如上面路勁使用mkdirs方法可以創(chuàng)建成功
public static void main(String[] args) throws IOException {
File file = new File("/Users/chenyq/Documents/abc/aaa");
boolean res = file.mkdirs();
// abc文件不存在所以創(chuàng)建失敗
System.out.println(res); // true
}
| 方法名稱 | 說明 |
|---|---|
| delete() | 刪除由此抽象路徑名表示的文件或空文件夾 |
**注意 **:
delete方法默認(rèn)只能刪除文件和空文件夾。
delete方法直接刪除不走回收站
public static void main(String[] args) {
File file1 = new File("/Users/chenyq/Documents/abc");
// 不是空文件或文件夾無法刪除
System.out.println(file1.delete()); // false
File file2 = new File("/Users/chenyq/Documents/abc/aaa");
System.out.println(file2.delete()); // true
}
遍歷文件夾
File類的遍歷API:
| 方法名稱 | 說明 |
|---|---|
| public String[] list() | 獲取當(dāng)前目錄下所有的"一級(jí)文件名稱"到一個(gè)字符串?dāng)?shù)組中去返回。 |
| public File[] listFiles()(常用) | 獲取當(dāng)前目錄下所有的"一級(jí)文件對象"到一個(gè)文件對象數(shù)組中去返回(重點(diǎn)) |
public static void main(String[] args) {
File file = new File("/Users/chenyq/Documents");
// 輸出一級(jí)文件和文件夾的名稱
String[] fileName = file.list();
System.out.println(Arrays.toString(fileName));
//[demo, learn_Java, .DS_Store, test, .localized, coderwhy, code, heima_Java, utils, learn_first, class, .UTSystemConfig]
}
public static void main(String[] args) {
File file = new File("/Users/chenyq/Documents");
// 輸出一級(jí)文件和文件夾對象
Object[] fileObj = file.listFiles();
System.out.println(Arrays.toString(fileObj));
// 拿到文件對象數(shù)組后可以調(diào)用方法
for (File o : fileObj) {
System.out.println(o.getName());
}
}
ListFiles方法的注意事項(xiàng):
當(dāng)調(diào)用者不存在時(shí),返回null
當(dāng)調(diào)用者是一個(gè)文件時(shí),返回null
當(dāng)調(diào)用者是一個(gè)空文件夾時(shí),返回一個(gè)長度為0的數(shù)組
當(dāng)調(diào)用者是一個(gè)有內(nèi)容的文件夾時(shí),將里面所有文件和文件夾的路徑放在File數(shù)組中返回
當(dāng)調(diào)用者是一個(gè)有隱藏文件的文件夾時(shí),將里面所有文件和文件夾的路徑放在File數(shù)組中返回,包含隱藏內(nèi)容
當(dāng)調(diào)用者是一個(gè)需要權(quán)限才能進(jìn)入的文件夾時(shí),返回null
補(bǔ)充:Java中使用File類操作文件時(shí)的路徑問題
Java操作文件首先需要實(shí)例化一個(gè)對象,F(xiàn)ile類實(shí)例化對象時(shí)必須指定文件路徑,對于不同的操作系統(tǒng),文件路徑中的分隔符不同,例如Windows系統(tǒng)分隔符為反斜杠“\”,Linux系統(tǒng)則為正斜杠“/”。
File類提供了路徑分隔符的常量來確保Java文件操作在不同的操作系統(tǒng)下都能運(yùn)行。
如果在實(shí)例化File對象時(shí)采用File f = new File("d:\\test.txt"),程序在Windows系統(tǒng)可完美運(yùn)行,但是移植到Linux系統(tǒng)會(huì)出錯(cuò),使用以下方式可避免該問題:
String path = "d:"+File.separator+"test.txt"; File f = new File(path);
因此在使用File對象操作文件時(shí),盡可能使用File對象自帶的分隔符。
總結(jié)
到此這篇關(guān)于Java中File文件操作類的超詳細(xì)使用教程的文章就介紹到這了,更多相關(guān)Java File文件操作類使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java?Chassis3的多種序列化方式支持技術(shù)解密
這篇文章主要為大家介紹了Java?Chassis?3多種序列化方式支持技術(shù)解密,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
SpringBoot項(xiàng)目實(shí)現(xiàn)MyBatis流式查詢的教程詳解
這篇文章主要介紹了SpringBoot項(xiàng)目如何實(shí)現(xiàn)MyBatis的流式查詢,mybatis的流式查詢,有點(diǎn)冷門,實(shí)際用的場景比較少,但是在某些特殊場景下,卻是十分有效的一個(gè)方法,感興趣的同學(xué)可以參考一下2023-06-06
Java實(shí)踐練習(xí)輕松幾行實(shí)現(xiàn)追書神器
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)追書神器,用技術(shù)改變生活,大家可以在過程中查缺補(bǔ)漏,提升水平2021-10-10
java整數(shù)(秒數(shù))轉(zhuǎn)換為時(shí)分秒格式的示例
這篇文章主要介紹了java整數(shù)(秒數(shù))轉(zhuǎn)換為時(shí)分秒格式的示例,需要的朋友可以參考下2014-04-04
Java8 Stream Collectors收集器使用方法解析
這篇文章主要介紹了Java8 Stream Collectors收集器使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
java如何不通過構(gòu)造函數(shù)創(chuàng)建對象(Unsafe)
這篇文章主要介紹了java如何不通過構(gòu)造函數(shù)創(chuàng)建對象(Unsafe)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03

