JAVA進階篇之詳細了解File文件的常用API
1.0 File 文件的說明
在 Java 中,F(xiàn)ile 類是用于操作文件和文件夾的類。它提供了一系列的方法,可以用于創(chuàng)建、刪除、重命名、查詢文件和目錄的信息等操作。
2.0 如何創(chuàng)建 File 類的對象
一般都是通過文件路徑創(chuàng)建 File 對象,注意的是該對象即可以是文件也可以是文件夾。
常用的三種方式:
(1)使用文件路徑創(chuàng)建 File 對象、(2)使用目錄路徑和文件名創(chuàng)建 File 對象、(3)使用父目錄的 File 對象和文件名創(chuàng)建 File 對象
代碼如下:
public class NewFile { public static void main(String[] args) { //1. 創(chuàng)建文件對象 File f1 = new File("D:\\software\\aaa\\bbb.txt"); //這樣就可以得到了該路徑的文件對象了。 //2. 創(chuàng)建文件夾對象 File f2 = new File("D:\\software\\aaa"); //像這樣就可以得到了該路徑的文件夾對象了。 //3. 第二種創(chuàng)建文件對象的方式 // 使用父目錄的 File 對象和文件名創(chuàng)建 File 對象 File f3 = new File(f2,"bbb.txt"); //4. 第四種創(chuàng)建文件對象的方式 // 使用目錄路徑和文件名創(chuàng)建 File 對象 File f4 = new File("D:\\software\\aaa","bbb.txt"); } }
這些方式都是大致是相同的,表達都是同一個意思。
2.1 需要注意的事項
第一個點:File 類對象既可以是文件也可以是文件夾。
第二個點:無論該路徑上的文件或者文件夾是否存在,都不會報錯,文件或者文件夾存不存在都是可以的創(chuàng)建 File 類對象的。
第三個點:編寫路徑的時候,需要注意的是如果用到了反斜杠,為了防止字符轉義,所以需要再加多一條反斜杠進行轉義為單個反斜杠。如果用到了正斜桿,就可以單寫一條就夠了。還可以用 File 類中的方法來進行編寫路徑。
代碼如下:
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()); } }
運行結果如下:
這三種效果都是相同的,都可以得到該類的對象。
3.0 File 類的常用 API
先來介紹創(chuàng)建、刪除、重命名、查詢文件和目錄的信息的相關 API。
3.1 如何創(chuàng)建文件或文件夾
createNewFile():創(chuàng)建一個新的空文件。
代碼如下:
import java.io.IOException; public class NewFile { public static void main(String[] args) throws IOException { //先要定義 File 類對象 File f1 = new File("D:\\software\\aaa\\ccc.txt"); //創(chuàng)建文件 f1.createNewFile(); } }
如果文件不存在的話,就會創(chuàng)建一個空文件。需要注意的是,這里會有編譯異常,需要拋異?;蛘卟东@異常。
mkdir():創(chuàng)建一個新的目錄。
代碼如下:
import java.io.File; public class NewFile { public static void main(String[] args) { File f1 = new File("D:\\software\\aaa\\ddd"); f1.mkdir(); } }
如果文件不存在的話,就會創(chuàng)建一個空文件。需要注意的是,只能創(chuàng)建一級文件夾。
mkdirs():創(chuàng)建一個多級目錄。
代碼如下:
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)建成功都會返回 boolean 類型。
3.2 如何查詢文件和文件夾的信息
這些查詢信息的 API 會比較多,但是很容易上手,直接代碼演示了。
代碼如下:
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 判斷當前文件對象,對應的文件路徑是否存在,存在返回true,反之。 System.out.println(f1.exists()); //輸出結果為:true //2.0 判斷當前文件對象指代的是否是文件,是文件返回true,反之。 System.out.println(f1.isFile()); //輸出結果為:true //3.0 判斷當前文件對象指代的是否是文件夾,是文件返回true,反之。 System.out.println(f1.isDirectory()); //輸出結果為:false //4.0 獲取文件的名稱(包含后綴) String name = f1.getName(); System.out.println(name); //輸出結果為:bbb.txt //5.0 獲取文件的大小,返回字節(jié)個數(shù),返回類型為 long 類型。 long len = f1.length(); System.out.println(len); //輸出結果為:0 //6.0 獲取文件的最后修改的時間,返回類型為 long 類型。 long lastTime = f1.lastModified(); System.out.println(lastTime); //輸出結果為:1698570082109 //這里可以格式化 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = simpleDateFormat.format(lastTime); System.out.println(time); //輸出結果為:2023-10-29 17:01:22 //7.0 獲取創(chuàng)建文件對象時,使用的路徑。 String path = f1.getPath(); System.out.println(path); //輸出結果為:D:\software\aaa\bbb.txt //8.0 獲取創(chuàng)建文件對象時,使用的絕對路徑。 String absolutePath = f1.getAbsolutePath(); System.out.println(absolutePath); //輸出結果為:D:\software\aaa\bbb.txt } }
運行結果如下:
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()); } }
刪除成功會返回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)); } }
如果可以改名成功,會返回true,反之。
3.5 如何遍歷文件和文件夾名稱
list():返回目錄下的所有文件和目錄的名稱數(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)); } }
返回的是字符串類型的文件名,而不是文件或者文件夾對象。
3.6 如何遍歷文件和文件夾對象
listFiles():返回目錄下的所有文件和目錄的File對象數(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)); } }
運行結果如下:
得到的是文件或者是文件夾的對象。
4.0 File 文件搜索
接下來做個小項目,F(xiàn)ile 文件搜索,給出盤符還有目標文件,來通過遍歷來找到該目標文件的路徑,并且啟動起來。
代碼如下:
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); } } } } }
總結
到此這篇關于JAVA進階篇之File文件的常用API的文章就介紹到這了,更多相關JAVA File文件的常用API內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
IDEA2023版本創(chuàng)建Spring項目只能勾選17和21卻無法使用Java8的完美解決方案
想創(chuàng)建一個springboot的項目,本地安裝的是1.8,但是在使用Spring Initializr創(chuàng)建項目時,發(fā)現(xiàn)版本只有17和21,這篇文章主要介紹了IDEA2023版本創(chuàng)建Sping項目只能勾選17和21,卻無法使用Java8的解決方法,需要的朋友可以參考下2023-12-12SpringBoot如何注冊Servlet、Filter、Listener的幾種方式
在Servlet 3.0之前都是使用web.xml文件進行配置,這篇文章主要介紹了SpringBoot如何注冊Servlet、Filter、Listener的幾種方式,在Servlet 3.0之前都是使用web.xml文件進行配置,2018-10-10Java畢業(yè)設計實戰(zhàn)項目之倉庫管理系統(tǒng)的實現(xiàn)流程
這是一個使用了java+SSM+Maven+Bootstrap+mysql開發(fā)的倉庫管理系統(tǒng),是一個畢業(yè)設計的實戰(zhàn)練習,具有一個倉庫管理系統(tǒng)該有的所有功能,感興趣的朋友快來看看吧2022-01-01.NET Core使用SignalR實現(xiàn)實時通訊的示例代碼
SignalR是一個ASP.NETCore庫,用于在客戶端和服務器之間實現(xiàn)實時通訊,本文主要介紹了.NETCore中使用SignalR實現(xiàn)實時通訊,感興趣的可以了解一下2024-11-11Spring AI TikaDocumentReader詳解
TikaDocumentReader是SpringAI中用于從多種格式文檔中提取文本內(nèi)容的組件,支持PDF、DOC/DOCX、PPT/PPTX和HTML等格式,它在構建知識庫、文檔處理和數(shù)據(jù)清洗等任務中非常有用2025-01-01