一、File類概述
Java中的File類是一個非常實用的類,它代表了一個文件或目錄的路徑名。使用File類,你可以對文件或目錄進行創建、刪除、重命名、遍歷等操作。在使用File類之前,你需要引入java.io包。
二、File類常用方法
1. File構造函數
File(String pathname):通過給定的路徑名字元串創建一個新File實例。 File(String parent, String child):根據父路徑和子路徑字元串創建一個新File實例。 File(File parent, String child):根據父路徑和子路徑名字創建一個新File實例。
2. 文件或目錄的常用操作
2.1 創建文件或目錄
boolean createNewFile():創建一個新的空文件,如果文件已經存在,則不會創建,返回false。 boolean mkdir():創建一個新目錄,如果目錄已經存在,則不會創建,返回false。 boolean mkdirs():創建一個新目錄和其所有父目錄,如果目錄已經存在,則不會創建,返回false。
2.2 刪除文件或目錄
boolean delete():刪除文件或目錄。如果是一個目錄,則該目錄必須為空目錄才能被刪除。 void deleteOnExit():在VM退出時刪除文件或目錄。
2.3 重命名文件或目錄
boolean renameTo(File dest):重命名文件或目錄。當目標文件或目錄已經存在時,將覆蓋它。
2.4 判斷文件或目錄的存在性和屬性
boolean exists():判斷文件或目錄是否存在。 boolean isDirectory():判斷是否為目錄。 boolean isFile():判斷是否為文件。 boolean canRead():判斷文件或目錄是否可讀。 boolean canWrite():判斷文件或目錄是否可寫。 boolean isHidden():判斷文件或目錄是否是隱藏文件或目錄。 long lastModified():返迴文件或目錄最後修改時間戳(自1970年1月1日00:00:00 GMT起的秒數)。 long length():返迴文件的長度。
3. 文件或目錄的遍歷
3.1 獲取文件或目錄列表
String[] list():獲取該目錄下的所有文件和目錄的名稱字元串數組。 File[] listFiles():獲取該目錄下的所有文件和目錄的File對象數組。 File[] listFiles(FilenameFilter filter):獲取該目錄下符合指定過濾器的所有文件和目錄的File對象數組。 File[] listFiles(FileFilter filter):獲取該目錄下滿足指定過濾器的所有文件和目錄的File對象數組。
3.2 文件或目錄的遍歷
List getFiles(File file, List fileList):遞歸獲取目錄下所有文件的File對象,並加入到fileList集合中。
三、File類完整示例代碼
import java.io.*; public class FileDemo { public static void main(String[] args) throws IOException { // 構造函數示例 File file1 = new File("test.txt"); // 相對路徑,當前工作目錄 File file2 = new File("/Users/username/test.txt"); // 絕對路徑 File file3 = new File("/Users/username", "test.txt"); // 父路徑+子路徑 File file4 = new File(new File("/Users/username"), "test.txt"); // File對象和子路徑 // 文件或目錄的常用操作示例 file1.createNewFile(); file2.mkdirs(); file3.delete(); file4.renameTo(new File("/Users/username/newname.txt")); // 判斷文件或目錄的存在性和屬性示例 System.out.println(file1.exists()); System.out.println(file2.isDirectory()); System.out.println(file2.canRead()); System.out.println(file3.isFile()); System.out.println(file3.canWrite()); // 文件或目錄的遍歷示例 File[] fileList = new File("/Users/username").listFiles(); for (File file : fileList) { System.out.println(file.getName()); } List allFiles = new ArrayList(); getFiles(new File("/Users/username"), allFiles); for (File file : allFiles) { System.out.println(file.getAbsolutePath()); } } public static void getFiles(File file, List fileList) { // 如果是文件夾,遞歸獲取子文件 if (file.isDirectory()) { File[] subFiles = file.listFiles(); for (File subFile : subFiles) { getFiles(subFile, fileList); } } else { fileList.add(file); } } }
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/199436.html