您好,登錄后才能下訂單哦!
前言
眾所周知Java提供File類,讓我們對(duì)文件進(jìn)行操作,下面就來簡(jiǎ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).判斷功能
// 測(cè)試此抽象路徑名表示的文件或目錄是否存在
boolean exists()
// 測(cè)試此抽象路徑名表示的文件是否是一個(gè)目錄
boolean isDirectory()
// 測(cè)試此抽象路徑名表示的文件是否是一個(gè)標(biāo)準(zhǔn)文件
boolean isFile()
// 測(cè)試此抽象路徑名指定的文件是否是一個(gè)隱藏文件
boolean isHidden()
// 測(cè)試應(yīng)用程序是否可以讀取此抽象路徑名表示的文件
boolean canRead()
// 測(cè)試應(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é)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。