本篇以代碼為核心,在實踐中自學吧年輕人~ 非常好迭代作業,愛來自BUAA File對象 要進行文件處理肯定需要File類啦。 File的實例是一個實例(?),但是可以鏈接到本地的文件、文件夾,並對它們進行操作。 從下麵的一些示例中可以看到,同一份本地文件可以擁有多個File對象;同時,構造一個Fil ...
本篇以代碼為核心,在實踐中自學吧年輕人~
非常好迭代作業,愛來自BUAA
File對象
要進行文件處理肯定需要File
類啦。
File
的實例是一個實例(?),但是可以鏈接到本地的文件、文件夾,並對它們進行操作。
從下麵的一些示例中可以看到,同一份本地文件可以擁有多個File對象;同時,構造一個File對象時傳入的文件不存在,代碼並不會出錯。
創建一個File
對象需要傳入文件路徑:
File f1=new File("C:\\Windows\\notepad.exe");//絕對路徑
File f2=new File("./data/order/qwq.txt");//相對路徑
//文件路徑是String類:
String fileName="./data/order/"+merchant.getCard()+".txt";
File f3=new File(fileName);
相對路徑中.
表示當前目錄,..
表示上級目錄。
一些方法
- 判斷文件/目錄是否存在:
boolean exists()
判斷文件是否相同
File對象有3種形式表示的路徑,一種是getPath()
,返回構造方法傳入的路徑,一種是getAbsolutePath()
,返回絕對路徑,一種是getCanonicalPath
,它和絕對路徑類似,但是返回的是規範路徑。
規範路徑可用於判斷兩個文件對象指向的文件是否相同:
File file1=new File(fileName1);
File file2=new File(fileName2);
if(file1.getCanonicalPath().equals(file2.getCanonicalPath())){
System.out.println("The same path");
}
可以看出,同一份本地文件是可以擁有多個
File
對象的。
在本地創建文件:
file.creatNewFile()
以下是完整代碼:
String fileName="./data/qwq.txt";//需要創建的文件路徑
File file=new File(fileName);
File fileP=file.getParentFile();//獲取當前文件所在的目錄
if(!fileP.exists()){//判斷是否在本地存在(目錄和文件通用)
fileP.mkdirs();
//創建當前File對象表示的目錄,併在必要時將不存在的父目錄也創建出來;
}
if(!file.exists()){
file.createNewFile();//在本地磁碟創建新文件
}
遍歷文件夾:
使用list()
或listFiles()
。
listFile()
可以過濾不想要的文件和文件夾。
File f = new File("C:\\Windows");
File[] fs1 = f.listFiles(); // 列出所有文件和子目錄
// 僅列出.exe文件
File[] fs2 = f.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".exe"); // 返回true表示接受該文件
}
});
刪除文件:
public static void delete(String path) {
// 為傳進來的路徑參數創建一個文件對象
File file = new File(path);
// 如果目標路徑是一個文件,那麼直接調用delete方法刪除即可
// file.delete();
// 如果是一個目錄,那麼必須把該目錄下的所有文件和子目錄全部刪除,才能刪除該目標目錄,這裡要用到遞歸函數
// 創建一個files數組,用來存放目標目錄下所有的文件和目錄的file對象
File[] files;
// 將目標目錄下所有的file對象存入files數組中
files = file.listFiles();
// 迴圈遍歷files數組
if (files != null) {
for(File temp : files){
// 判斷該temp對象是否為文件對象
if (temp.isFile()) {
temp.delete();
}
// 判斷該temp對象是否為目錄對象
if (temp.isDirectory()) {
// 將該temp目錄的路徑給delete方法(自己),達到遞歸的目的
delete(temp.getAbsolutePath());
// 確保該temp目錄下已被清空後,刪除該temp目錄
temp.delete();
}
}
}
file.delete();
}
⚠️刪除文件前務必關閉文件的輸入輸出流等等,否則會導致刪除失敗⚠️
輸入輸出見下篇。
博主去趕作業了(罵罵咧咧)