Java的 File類

Java的 File類

  • File類:
    • 相關方法:
      • 構造方法:
      • 創建文件/目錄:
      • 重命名:
      • 判斷:
      • 獲取:
      • 刪除:
    • 路徑:
    • 相關操作:
      • 操作1:
        • 目錄存在:
        • 一層級的目錄不存在:
        • 多層級的目錄不存在:
      • 操作2:
        • 所有文件信息:
        • 文件后綴名為txt:
        • API的過濾器:
        • 目錄及子目錄文件信息:

?

File類:

File是文件目錄路徑名的抽象表示。
? ? ? ?File類的對象可以表示文件:C:\Users\ouyang\Desktop\hhh.txt。
? ? ? ?File類的對象可以表示目錄路徑名:C:\Users\ouyang\Desktop。
?
File只關注文件本身的信息(文件名、是否可讀、是否可寫…),而不能操作文件里面的內容。
?
? File類 – 表示文件或文件夾,不能對文件里的數據進行操作。

文件里的數據進行操作的是:IO流

?

相關方法:

File 方法:

  1. 該文件存放的絕對路徑 String getAbsolutPath();

  2. 該文件的文件名 String getName();

  3. 該文件是否可寫 boolean canWrite();

  4. 該文件是否可讀 boolean canRead();

  5. 該文件是否為隱藏文件 boolean isHidden();

  6. 該文件的長度 int length();

  7. 該文件的最后修改時間 long lastModify();

public static void main(String[] args) {//創建file對象File file = new File("C:\\Users\\何小寶\\Desktop\\hhy.txt");System.out.println("獲取文件路徑:" + file.getAbsolutePath());System.out.println("獲取文件名:" + file.getName());System.out.println("獲取文件是否可讀:" + file.canRead());System.out.println("獲取文件是否可寫:" + file.canWrite());System.out.println("獲取文件是否隱藏:" + file.isHidden());System.out.println("獲取文件大小(字節):" + file.length());//格式化日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String datetime = sdf.format(file.lastModified());System.out.println("獲取文件最后修改時間:" + datetime);}

?
?

構造方法:

方法方法介紹
File(File parent, String child)根據 parent 抽象路徑名和 child 路徑名字符串創建一個新 File 實例。
File(String pathname)通過將給定路徑名字符串轉換為抽象路徑名來創建一個新 File 實例。
File(String parent, String child)根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File 實例。

?

創建文件/目錄:

方法方法介紹
boolean createNewFile()當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創建一個新的空文件。
boolean mkdir()創建此抽象路徑名指定的目錄。
boolean mkdirs()創建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。

?
?

重命名:

方法方法介紹
boolean renameTo(File dest)重新命名此抽象路徑名表示的文件。

?

判斷:

方法方法介紹
boolean isDirectory()測試此抽象路徑名表示的文件是否是一個目錄。
boolean isFile()測試此抽象路徑名表示的文件是否是一個標準文件。
boolean isHidden()測試此抽象路徑名指定的文件是否是一個隱藏文件。
boolean canRead()測試應用程序是否可以讀取此抽象路徑名表示的文件。
boolean canWrite()測試應用程序是否可以修改此抽象路徑名表示的文件。

?
?

獲取:

方法方法介紹
File getAbsoluteFile()返回此抽象路徑名的絕對路徑名形式。
String getAbsolutePath()返回此抽象路徑名的絕對路徑名字符串。
String getName()返回由此抽象路徑名表示的文件或目錄的名稱。
String getParent()返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。
File getParentFile()返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null。
String getPath()將此抽象路徑名轉換為一個路徑名字符串。
long lastModified()返回此抽象路徑名表示的文件最后一次被修改的時間。
long length()返回由此抽象路徑名表示的文件的長度。
String[] list()返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。
String[] list(FilenameFilter filter)返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
File[] listFiles()返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。

?

刪除:

方法方法介紹
boolean delete()刪除此抽象路徑名表示的文件或目錄。

?

?

路徑:

相對路徑:相對于當前項目下的路徑。
?
絕對路徑:從根目錄開始的完整路徑,包含了文件系統中該文件或目錄,所在的完整路徑,通常以根目錄符號(如 Linux 中的“/”,Windows 中的“C:\”)開始。

public static void main(String[] args) {File file = new File("file.txt");//使用的是相對路徑System.out.println(file.length());//C:\wenjian\file.txtSystem.out.println("絕對路徑:" + file.getAbsolutePath());//file.txtSystem.out.println("相對路徑:" + file.getPath());}

?
?

相關操作:

?

操作1:

通過程序,判斷指定路徑的文件是否存在,如果不存在,則創建該文件。

下面按各種情況來解決該問題:

  1. 目錄已存在的情況。

  2. 有一個層級的目錄不存在的情況。

  3. 有多個層級的目錄不存在的情況。

?

目錄存在:
//目錄已存在的情況
public static void main(String[] args) throws IOException {File file = new File("file01\\hhh.txt");//判斷文件是否存在if(!file.exists()){//文件不存在//創建文件file.createNewFile();}}

?

一層級的目錄不存在:
//有一個層級的目錄不存在的情況
public static void main(String[] args) throws IOException {//C:\wenjian\file01\hhh.txtFile file = new File("file01\\hhh.txt");//獲取父路徑 -- C:\wenjian\file01File parentFile = file.getParentFile();//判斷父路徑是否存在if(!parentFile.exists()){//創建一層目錄parentFile.mkdir();}//判斷文件是否存在if(!file.exists()){//創建文件file.createNewFile();}}

?

多層級的目錄不存在:
//有多個層級的目錄不存在的情況
public static void main(String[] args) throws IOException {//C:\wenjian\file01\file02\file03\hhh.txtFile file = new File("file01\\file02\\file03\\hhh.txt");//獲取父路徑 -- C:\wenjian\file01\file02\file03File parentFile = file.getParentFile();//判斷父路徑是否存在if(!parentFile.exists()){//創建多層目錄parentFile.mkdirs();}//判斷文件是否存在if(!file.exists()){//創建文件file.createNewFile();}}

?

?

操作2:

  1. 輸出指定目錄下的所有文件信息,比如打印當前項目根目錄下的所有文件信息(只考慮當前目錄,不考慮子目錄)。

  2. 要求只輸出文件后綴名為txt的文件。

  3. 根據API的過濾器來完成該功能。

  4. 需求繼續跟進,列出當前目錄及子目錄中符合該條件的文件信息(遞歸)。

?

所有文件信息:
//輸出指定目錄下的所有文件信息
public static void main(String[] args) {File file = new File("D:\\2023");//獲取當前目錄下所有文件及文件夾的名字
//		String[] list = file.list();
//		for (String fileName : list) {
//			System.out.println(fileName);
//		}//獲取當前目錄下所有的file對象File[] listFiles = file.listFiles();//獲取當前目錄下所有的文件及文件夾的file對象for (File f : listFiles) {//可以輸出file對象相關的方法System.out.println(f.getName() + " -- " + f.canRead() + " -- " + f.canWrite());}}

?

文件后綴名為txt:
//要求只輸出文件后綴名為txt的文件
public static void main(String[] args) {File file = new File("D:\\2023");//獲取當前目錄下所有文件及文件夾的名字
//		String[] list = file.list();
//		for (String fileName : list) {//能輸出文件夾
//			if(fileName.endsWith(".txt")){
//				System.out.println(fileName);
//			}
//		}//獲取當前目錄下所有的file對象File[] listFiles = file.listFiles();//獲取當前目錄下所有的文件及文件夾的file對象for (File f : listFiles) {//文件名字String fileName = f.getName();//判斷f是否是文件if(f.isFile() && fileName.endsWith(".txt")){System.out.println(fileName);}}}

?

API的過濾器:
//根據API的過濾器來完成該功能
public static void main(String[] args) {File file = new File("D:\\2023");//過濾器,過濾你不想要的內容,留下你想要的內容。String[] list = file.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {File childFile = new File(dir, name);if(childFile.isFile() && childFile.getName().endsWith(".txt")){return true;}return false;}});for (String fileName : list) {System.out.println(fileName);}}

?

目錄及子目錄文件信息:
//需求繼續跟進,列出當前目錄及子目錄中符合該條件的文件信息(遞歸)
public static void main(String[] args) {File file = new File("D:\\2023");fileHandler(file, ".txt");}public static void fileHandler(File file,String suffix){File[] listFiles = file.listFiles();for (File f : listFiles) {if(f.isFile()){//文件String name = f.getName();if(name.endsWith(suffix)){System.out.println(name);}}else if(f.isDirectory()){//文件夾fileHandler(f, suffix);}}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17421.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17421.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17421.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c++模板與泛型編程

模板的作用:通過使用模板降低重復代碼的編寫,把已經寫好的代碼作用最大化; 模板的概念 1.模板與泛型編程(目的時只進行邏輯操作,不需要考慮數據類型,將類型作為參數傳遞) 模板是實現代碼重用…

【軟件設計師】程序語言

1.程序設計語言基本概念 1.1 低級語言與高級語言 低級語言:機器語言和匯編語言稱為低級語言 機器語言指0.,1組成的機器指令序列 匯編語言指用符號表示指令的語言,如MOV AX,2 高級語言:從人類的邏輯角度出發&#xff0…

numpy-mkl的下載地址

不要使用pip3直接在終端安裝,因為pip3默安裝的是numpy,而不是numpymkl。 采用在第三方庫中手動下載后,再安裝的方式。 第三方庫網址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 如果不能進入就可以選擇去git里面&#x…

(三)MobaXterm、VSCode、Pycharm ssh連接服務器并使用

背景:根據前兩篇文章操作完成后, 手把手教學,一站式安裝ubuntu及配置服務器-CSDN博客 手把手教學,一站式教你實現服務器(Ubuntu)Anaconda多用戶共享-CSDN博客 課題組成員每人都有自己的帳號了&#xff0…

嵌入式0基礎開始學習 Ⅲ Linux基礎(3)正則表達式

0.問題引入 字符串是計算機應用中最為廣泛的處理對象之一(瀏覽器,xml文件,代碼) 并且字符串的組合規則形式各種各樣,如: 數字字符串 email字符串 IP地址字符串 網址 …

互聯網政務應用安全管理規定:使用安全連接方式訪問

前幾日,由中央網絡安全和信息化委員會辦公室、中央機構編制委員會辦公室、工業和信息化部、公安部等4部門聯合制定的《互聯網政務應用安全管理規定》(以下簡稱規定)發布了,規定定義了互聯網政務應用,也對互聯網政務應用…

Android數據緩存框架 - 內存數據載體從LiveData到StateFlow

引言:所有成功者的背后,都有一份艱苦的歷程,不要只看到了人前的風光,而低估了他們背后所付出的努力。 隨著flow到流行度越來越高,有開發者呼吁我使用flow,于是我就如你們所愿,新增了StateFlow作…

智能時代下,人機交互和虛擬現實的機遇和挑戰

智能時代下,人機交互和虛擬現實的機遇和挑戰

多態(C++)

多態(C) 本文如果有錯誤或者不足的地方,希望各位大佬多多指點。 【本文目錄】 1.多態的概念2.多態的定義及實現3.抽象類4.多態的原理5.單繼承和多繼承的虛函數表 1.多態的概念 多態的概念就是:多種形態 多態就是可以有多種的形態。不同的身份去實現同一…

【Leetcode 160】環形鏈表——雙指針,細節講解

題目 給你一個鏈表的頭節點 head ,判斷鏈表中是否有環。 如果鏈表中有某個節點,可以通過連續跟蹤 next 指針再次到達,則鏈表中存在環。 為了表示給定鏈表中的環,評測系統內部使用整數 pos 來表示鏈表尾連接到鏈表中的位置&#…

RTSP/Onvif安防視頻監控云平臺EasyNVR重啟后通道在線視頻無法播放,接口報錯502是什么原因?

EasyNVR安防視頻云平臺是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif協議接入的安防監控流媒體視頻云平臺。平臺具備視頻實時監控直播、云端錄像、云存儲、錄像檢索與回看、告警等視頻能力,能對接入的視頻流進行處理與多端分發,包括RTSP、RTMP、HTTP-FLV、W…

hypack如何采集多波束數據?(下)

多波束測量模塊 1)記錄多波束和輔助傳感器的數據; 2)顯示實時改正后的數據和數據質量信息。 ?編輯? 測量準備 1)設置大地測量參數和硬件設置; 2)計劃測線 計劃測線是一定間距的平行線,…

微軟聯手清華,AI注釋讓文本到圖像生成更符合人類偏好

獲取本文論文原文PDF,請在公眾號【AI論文解讀】留言:論文解讀 摘要 本研究展示了利用人類偏好數據集來精細調整文本到圖像生成模型的潛力,增強了生成圖像與文本提示之間的一致性。盡管取得了進展,現有的人類偏好數據集要么構建成…

掌控安全CTF-2024年5月擂臺賽-WP(部分)

MISC ez_Misc 題目給了一個加密的壓縮包和一個文本文檔,首先我們先來看文本的內容,如下: 很容易看出,0寬隱寫,用PuzzleSolver梭哈一下,發現了:Thi3 is n0t 2 hint 又在文本中發現一個特征&…

【2024】高校網絡安全管理運維賽

比賽時間:2024-05-06 Re-easyre 基本的base64換表,用CyberChef解密 Re-babyre 進入主函數,發現輸入四次 看一下就知道是大數求解 (當初寫的時候差不多 不知道為什么第四個總是算錯…) from z3 import *s Solver() # 設置一個解方程的類…

中心滲透Ⅱ

cs與msf權限傳遞以及mimikatz抓取win2012明文密碼 使用Cobalt Strike抓取win2012明文密碼,將會話傳遞到Metasploit Framework上 1.cs生成木馬并使目標服務器中馬 建立監聽生成木馬 2.抓取目標主機的明文密碼 通過修改注冊表來讓Wdigest Auth保存明文口令 shell …

技術就緒度

技術就緒度(Technology Readiness Level,簡稱TRL)這個術語中的每個字符可以這樣理解: 技術(Technology):指的是正在研發或評估的具體的技術、工具、材料或方法。這可以是一套軟件程序、一個物理…

一分鐘揭秘面試官真實意圖,穩拿offer的面試秘訣!

想要在面試中脫穎而出,順利獲得心儀的offer嗎?那么,你需要了解面試官背后的潛臺詞。通過解析這些潛臺詞,你將能更準確地把握面試官的期望,并給出他們最喜歡的回答。下面,就讓我們一起揭開這層神秘的面紗&am…

深入pandas:數據分析

目錄 前言 第一點:導入模塊 第二點:準備數據 第三點:簡單的分析數據 第四點:【重點】數據透支 總結 前言 在數據分析與挖掘的領域,了解如何使用工具和方法來探索數據是至關重要的。本文將探討如何利用Python中的…

C語言常用字符串處理函數

C語言中包含了很多對字符串處理的函數,要使用這些函數&#xff0c; 首先需要導入頭文件#include <string.h> 1. strlen() -- 計算字符串長度 原型: size_t strlen(char const *string); 例: char *str "abcde"; size_t len strlen(str); // 結果為…