Java中File文件操作類的基礎(chǔ)用法
前言
眾所周知Java提供File類,讓我們對(duì)文件進(jìn)行操作,下面就來簡單整理了一下File類的用法。 話不多說了,來一起看看詳細(xì)的介紹吧
1.基本概念
File:文件和目錄路徑名的抽象表示形式,代表文件或者文件夾。
2.構(gòu)造方法
// 根據(jù)parent抽象路徑名和child路徑名字符串創(chuàng)建一個(gè)新File實(shí)例 File(File parent, String child) // 通過將給定路徑名字符串轉(zhuǎn)換為抽象路徑名來創(chuàng)建一個(gè)新File實(shí)例 File(String pathname) // 根據(jù)parent路徑名字符串和child路徑名字符串創(chuàng)建一個(gè)新File實(shí)例 File(String parent, String child) // 通過將給定的file:URI轉(zhuǎn)換為一個(gè)抽象路徑名來創(chuàng)建一個(gè)新的File實(shí)例 File(URI uri)
3.常用方法
(1).創(chuàng)建功能
// 創(chuàng)建此抽象路徑名指定的目錄
boolean mkdir()
// 創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄
boolean mkdirs()
// 當(dāng)且僅當(dāng)不存在具有此抽象路徑名指定名稱的文件時(shí),不可分地創(chuàng)建一個(gè)新的空文件
boolean createNewFile()
// 在默認(rèn)臨時(shí)文件目錄中創(chuàng)建一個(gè)空文件,使用給定前綴和后綴生成其名稱
static File createTempFile(String prefix, String suffix)
// 在指定目錄中創(chuàng)建一個(gè)新的空文件,使用給定的前綴和后綴字符串生成其名稱
static File createTempFile(String prefix, String suffix, File directory)
// 構(gòu)造方法一
File file1 = new File("f://file1");
// 構(gòu)造方法二
File file2 = new File("f://file1", "file2");
// 構(gòu)造方法三
File file3 = new File(file2, "file3.txt");
// 創(chuàng)建目錄并返回是否創(chuàng)建成功,如果目錄存在則返回false
boolean b1 = file1.mkdir();
System.out.println(b1);// true
// 創(chuàng)建目錄
boolean b2 = file2.mkdir();
System.out.println(b2);// true
// 創(chuàng)建文件
// 在F盤下創(chuàng)建/file1/file2/file3.txt文件
boolean b3 = file3.createNewFile();
System.out.println(b3);// true
// 創(chuàng)建空文件并指定前綴和后綴
// 在F盤下創(chuàng)建/file1/file2/file4.....exe文件
File.createTempFile("file4", ".exe", file2);

注:三種構(gòu)造方法效果是等同的,沒有本質(zhì)區(qū)別;創(chuàng)建目錄mkdir()、mkdirs()方法,mkdirs()方法創(chuàng)建目錄時(shí),如果待創(chuàng)建目錄的上幾級(jí)目錄不存在則一并創(chuàng)建,mkdir()則只能創(chuàng)建單級(jí)目錄。
(2).刪除功能
// 刪除此抽象路徑名表示的文件或目錄
boolean delete()
//刪除目錄 System.out.println(file1.delete()); // false //刪除文件 System.out.println(file3.delete());// true
注:刪除操作時(shí),刪除的是目錄,則必須保證是空目錄。
(3).判斷功能
// 測試此抽象路徑名表示的文件或目錄是否存在
boolean exists()
// 測試此抽象路徑名表示的文件是否是一個(gè)目錄
boolean isDirectory()
// 測試此抽象路徑名表示的文件是否是一個(gè)標(biāo)準(zhǔn)文件
boolean isFile()
// 測試此抽象路徑名指定的文件是否是一個(gè)隱藏文件
boolean isHidden()
// 測試應(yīng)用程序是否可以讀取此抽象路徑名表示的文件
boolean canRead()
// 測試應(yīng)用程序是否可以修改此抽象路徑名表示的文件
boolean canWrite()
File file = new File("F://hello");
File file2 = new File(file, "blog.txt");
// 判斷是否存在
if (!file.exists()) {
// 創(chuàng)建目錄
file.mkdir();
}
if (file2.exists()) {
// 創(chuàng)建文件
file2.createNewFile();
}
// 判斷是否是目錄
System.out.println(file.isDirectory());// true
// 判斷是否是文件
System.out.println(file.isFile());// false
System.out.println(file2.isDirectory());// false
System.out.println(file2.isFile());// true
System.out.println(file2.isHidden());// false
// 判斷是否是隱藏的
System.out.println(file2.isHidden());// false
// 判斷是否可讀
System.out.println(file2.canRead());// true
// 判斷是否可寫
System.out.println(file2.canWrite());// true
注:可以自主修改文件可讀性,查看不同輸出。
(4).獲取功能
(1).基本獲取功能
// 返回由此抽象路徑名表示的文件或目錄的名稱
String getName()
// 返回此抽象路徑名的絕對(duì)路徑名形式
File getAbsoluteFile()
// 返回此抽象路徑名的絕對(duì)路徑名字符串
String getAbsolutePath()
// 將此抽象路徑名轉(zhuǎn)換為一個(gè)路徑名字符串
String getPath()
// 返回此抽象路徑名表示的文件最后一次被修改的時(shí)間
long lastModified()
File file = new File("F://hello");
File file2 = new File(file, "blog.txt");
// 判斷文件或目錄是否存在
if (!file.exists()) {
// 不存在則創(chuàng)建
file.mkdir();
}
if (file2.exists()) {
// 創(chuàng)建文件
file2.createNewFile();
}
//獲取文件名或者目錄名
System.out.println(file2.getName());// blog.txt
//獲取文件或目錄的絕對(duì)路徑
System.out.println(file2.getAbsolutePath());// F:\hello\blog.txt
//獲取文件或目錄的路徑名(絕對(duì)路徑或者相對(duì)路徑)
System.out.println(file2.getPath());// F:\hello\blog.txt
//獲取文件或目錄修改的最后時(shí)間返回毫秒值
System.out.println(file2.lastModified());// 1463734158963
(2).迭代獲取功能,過濾器功能
// 返回一個(gè)字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄
String[] list()
// 返回一個(gè)字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄
String[] list(FilenameFilter filter)
// 返回一個(gè)抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中的文件
File[] listFiles()
// 返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄
File[] listFiles(FileFilter filter)
// 返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄
File[] listFiles(FilenameFilter filter)
圖示:先看下F盤里面的東東

File file = new File("F://");
// 獲取抽象路徑名下的文件和目錄
String[] s = file.list();
// 過濾文件或者目錄名
String[] ss = file.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
// 返回以.png結(jié)尾的文件或者目錄名
// 控制返回值判斷是否添加到數(shù)組中
return name.endsWith(".png");
}
});
// 增強(qiáng)for輸出
for (String string : s) {
System.out.print(string + " ");// $RECYCLE.BIN android4.0黑馬 android視頻......等等
}
// 增強(qiáng)for
for (String string : ss) {
System.out.print(string + " ");// ic_ptr_loading.png ic_ptr_pull.png ic_ptr_release.png
}
// 獲取抽象路徑名下的文件和目錄對(duì)象
File[] files = file.listFiles();
// 獲取抽象路徑名下的文件和目錄對(duì)象,添加文件過濾
File[] files2 = file.listFiles(new FileFilter() {
public boolean accept(File pathname) {
// 判斷是否是隱藏目錄
return (pathname.isDirectory()&&pathname.isHidden());
}
});
// 獲取抽象路徑名下的文件和目錄對(duì)象,添加文件名過濾
File[] files3 = file.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
// 判斷是否是以png結(jié)尾的文件
return (new File(dir, name).isFile())&&name.endsWith(".png");
}
});
for (File f : files) {
System.out.print(f.getName()+" ");//$RECYCLE.BIN android4.0黑馬 android視頻......等等
System.out.println();
for (File f : files2) {
System.out.print(f.getName()+" ");//$RECYCLE.BIN ghos
}
System.out.println();
for (File f : files3) {
System.out.print(f.getName());//ic_ptr_loading.pngic_ptr_pull.pngic_ptr_release.png
}
(5).重命名功能
// 重新命名此抽象路徑名表示的文件
boolean renameTo(File dest)
// 重新命名此抽象路徑名表示的文件
// boolean renameTo(File dest)
File file = new File("f://");
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
File f = files[i];
//判斷是否是以.png結(jié)尾的文件
if (f.isFile() && f.getName().endsWith(".png")) {
// 更改文件名,renameTo()接收File對(duì)象 ,這里該對(duì)象并未指定盤符
boolean b = f.renameTo(new File("pic" + i + ".png"));
System.out.println(b);
// true
// true
// true
}
}
圖示:


注:更改文件或目錄名時(shí),renameTo()方法參數(shù)對(duì)象如果不指定盤的話,默認(rèn)會(huì)將文件剪切到項(xiàng)目目錄下(由上面截圖可以看到);指定盤符的話會(huì)根據(jù)指定位置剪切到該位置。renameTo()方法相當(dāng)于剪切加重命名。
注:更多方法查看API
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Java編程一個(gè)隨機(jī)數(shù)產(chǎn)生模塊代碼分享
這篇文章主要介紹了Java編程一個(gè)隨機(jī)數(shù)產(chǎn)生模塊代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Java中SpringBoot的@Transactional原理
這篇文章主要介紹了Java中SpringBoot的@Transactional原理,面向元數(shù)據(jù)遍歷已經(jīng)成為越來越多開發(fā)者的偏好,因此原理從Springboot的EnableTransactionManagement注解說起,需要的朋友可以參考下2023-07-07
使用SpringBoot + Redis + Vue實(shí)現(xiàn)動(dòng)態(tài)路由加載頁面的示例代
在現(xiàn)代 Web 應(yīng)用開發(fā)中,動(dòng)態(tài)路由加載能夠顯著提升應(yīng)用的靈活性和安全性,本文將深入探討如何利用 Spring Boot、Redis、Element UI 和 Vue 技術(shù)棧實(shí)現(xiàn)動(dòng)態(tài)路由加載,并通過 Redis 生成和驗(yàn)證有效鏈接以實(shí)現(xiàn)頁面訪問控制,需要的朋友可以參考下2024-09-09
Mybatis代碼生成器Mybatis Generator(MBG)實(shí)戰(zhàn)詳解
本文我們主要實(shí)戰(zhàn)Mybatis官方的代碼生成器:Mybatis Generator(MBG),掌握它以后,可以簡化大部分手寫代碼,我們只需要寫復(fù)雜邏輯代碼,需要的朋友可以參考下2023-05-05
玩轉(zhuǎn)spring boot 結(jié)合AngularJs和JDBC(4)
玩轉(zhuǎn)spring boot,這篇文章主要介紹了結(jié)合AngularJs和JDBC,玩轉(zhuǎn)spring boot,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01

