一、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
微信掃一掃
支付寶掃一掃