Java文件處理(一):創建文件、遍歷文件夾、刪除文件/文件夾

来源:https://www.cnblogs.com/qiuerOTO/archive/2023/11/13/17829809.html
-Advertisement-
Play Games

本篇以代碼為核心,在實踐中自學吧年輕人~ 非常好迭代作業,愛來自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();
    }

⚠️刪除文件前務必關閉文件的輸入輸出流等等,否則會導致刪除失敗⚠️

輸入輸出見下篇。
博主去趕作業了(罵罵咧咧)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 話不多說,今天我們要介紹的是函數。本系列文章追求短而精,今天我們將重點討論函數以及與Java方法的區別。與Java方法不同,函數不需要像Java方法一樣講究修飾符等其他特性,它只需要使用"def"關鍵字進行聲明。另外,函數的參數也與Java方法有所不同,Java方法中不存在預設參數的概念,而在Pyt... ...
  • 七、判斷(二) 引:學校舉辦了一個抽獎獲得,根據學號給予學生獎勵,學生獎勵如下: 學號 獎勵 15692 現金500 65432 現金450 98741 現金250 2531 現金150 666 學號*2 321 學號*2 //if語句實現 #include <iostream> int main( ...
  • 在現代互聯網時代中,功能變數名稱是我們上網必備的工具,它承載著我們上網所需的所有信息。但是有時我們需要瞭解功能變數名稱的相關信息,比如IP地址、註冊人信息、功能變數名稱到期時間等等。這時候,我們就需要用到功能變數名稱反查API介面,來獲取這些信息。 一鍵獲取功能變數名稱的相關信息——功能變數名稱反查API介面的神奇功能,可以幫助我們快速獲取我們所 ...
  • 結構體 // 如何定義結構體 struct User { active: bool, username: String, email: String, sign_in_count: u64, } // 如何使用結構體 let user = User { active: true, username: ...
  • 本文設計了可視化賬本界面,將其分為總額統計、收支結構兩個標簽頁。總額統計中主要展示選定時間段內的收支總額、各存款賬戶的收支情況,還通過柱狀圖的形式展示變化趨勢;收支結構中通過餅圖的形式展示選定時間段內各收入/支出類型所占比例。本界面通過多個Dataframe類的私有屬性存放各動賬記錄,方便應對各種場... ...
  • 用python計算圓周率PI ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬描述 用python計算圓周率PI‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬ ...
  • 1 void meanFilter(BYTE* image, int width, int height, BYTE* outImg) 2 { 3 //均值濾波 4 int smth[9]; 5 int i, j, m, n; 6 BYTE block[9]; 7 8 // 高斯捲積核初始化 9 s ...
  • 原文在這裡。 由 Russ Cox, for the Go team 發佈於2023年11月10日 今天,我們慶祝Go開源發佈的第十四個生日!Go在過去一年裡取得了巨大的進展,發佈了兩個功能豐富的版本,並實現了其他重要的里程碑。 我們發佈了Go 1.20 in February和Go 1.21 in ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...