文件操作和IO(2):Java中操作文件

目錄

一、File的屬性

二、File的構造方法

三、File的方法

四、代碼示例

1、getName,getParent,getPath方法

2、getAbsolutePath,getCanonicalPath方法

3、exists,isDirectory,createNewFile方法

4、createNewFile,delete,deleteOnExit

5、list,listFiles,mkdir,mkdirs,renameTo方法


????????本章內容,主要涉及文件的元信息、路徑的操作,并不存在對文件的讀寫操作。

????????Java通過 java.io.File 類來對一個文件(包括目錄)進行抽象的描述。注意:有File對象并不意味著真實存在該文件。

以下是對File的概述:

一、File的屬性

修飾符及類型屬性說明
static StringpathSeparator依賴于系統的路徑分隔符,String
類型的表示
static charpathSeparatorChar依賴于系統的路徑分隔符,char類

這里路徑直接的分隔符是根據系統自動調整的,在開發過程中還是更推薦使用正斜杠 “ / ”。windows也支持正斜杠。


二、File的構造方法

簽名說明
File(File parent, String child)根據父目錄 + 孩子文件路徑,創建?個新的 File 實例
File(String pathname)根據文件路徑創建?個新的 File 實例,路徑可以是絕
對路徑或者相對路徑
File(String parent, String child)根據父目錄 + 孩子文件路徑,創建?個新的 File 實
例,父目錄用路徑表示

這里主要介紹中間的構造方法,中間的是最常用的。注意:這里的決定路徑有兩種情況:

????????1、如果是在idea中運行程序,此時工作目錄就是在項目所在的目錄。

? ? ? ? 2、如果把代碼打包成一個jar包,此時工作目錄就是在jar包所在目錄。


三、File的方法

修飾符及返回值類型方法簽名說明
StringgetParent()返回 File 對象的??錄?件路徑
StringgetName()返回 FIle 對象的純?件名稱
StringgetPath()返回 File 對象的?件路徑
StringgetAbsolutePath()返回File 對象的絕對路徑
StringgetCanonicalPath()返回 File 對象的修飾過的絕對路徑
booleanexists()判斷 File 對象描述的?件是否真實
存在
boolean? ? ? ? ? ? ? ? ? ? ? ? ?isDirectory()? ? ? ? ? ? ? ? ??判斷 File 對象代表的?件是否是?個?錄
booleanisFile()判斷 File 對象代表的?件是否是?
個普通?件
booleancreateNewFile()根據 File對象,?動創建?個空?
件。成功創建后返回 true
booleandelete()根據 File 對象,刪除該?件。成功
刪除后返回 true?
voiddeleteOnExit()根據 File 對象,標注?件將被刪
除,刪除動作會到 JVM 運?結束時
才會進?
String[]list()返回 File 對象代表的?錄下的所有
?件名
File[]listFiles()返回 File 對象代表的?錄下的所有
?件,以 File 對象表?
booleanmkdir()創建 File 對象代表的?錄
booleanmkdirs()創建 File 對象代表的?錄,如果必
要,會創建中間?錄
booleanrenameTo(File dest)進??件改名,也可以視為我們平
時的剪切、粘貼操作
booleancanRead()判斷??是否對?件有可讀權
booleancanWrite()判斷??是否對?件有可寫權限

四、代碼示例

1、getName,getParent,getPath方法

絕對路徑的File對象,代碼如下

public class IODemo1 {public static void main(String[] args) {//指定文件的路徑File f1 = new File("C:/IOTest/test.txt");//絕對路徑System.out.println(f1.getPath());//返回File對象的?件路徑System.out.println(f1.getParent());//返回 File 對象的??錄?件路徑System.out.println(f1.getName());//返回 FIle 對象的純?件名稱}
}

執行結果:

相對路徑的File對象,代碼如下

public class IODemo1 {public static void main(String[] args) {//指定文件的路徑File f1 = new File("./test.txt");//絕對路徑System.out.println(f1.getPath());//返回File對象的?件路徑System.out.println(f1.getParent());//返回 File 對象的??錄?件路徑System.out.println(f1.getName());//返回 FIle 對象的純?件名稱}
}

執行結果:

2、getAbsolutePath,getCanonicalPath方法

使用絕對路徑創造一個File對象,代碼如下

public class IODemo2 {public static void main(String[] args) throws IOException {File f = new File("C:/IOTest/test.txt");//絕對路徑System.out.println(f.getAbsolutePath());//返回File對象的絕對路徑System.out.println(f.getCanonicalPath());//返回File對象的修飾過的絕對路徑}
}

執行結果:

使用相對路徑創建File對象,代碼如下:

public class IODemo2 {public static void main(String[] args) throws IOException {File f = new File("./test.txt");//絕對路徑System.out.println(f.getAbsolutePath());//返回File對象的絕對路徑System.out.println(f.getCanonicalPath());//返回File對象的修飾過的絕對路徑}
}

執行結果:

可以看出,上面方法在絕對路徑中沒有啥差別,但在相對路徑的就有些許差別。getCanonicalPath返回File對象的修飾過的絕對路徑,也就沒有了點 ' . ' 修飾。

3、exists,isDirectory,createNewFile方法

使用相對路徑創建File對象,代碼如下:

public class IODemo3 {public static void main(String[] args) {File f = new File("./test.txt");boolean ret1 = f.exists();//判斷 File 對象描述的?件是否真實存在boolean ret2 = f.isDirectory();//判斷 File 對象代表的?件是否是?個?錄boolean ret3 = f.isFile();//判斷 File 對象代表的?件是否是?個普通?件System.out.println(ret1);System.out.println(ret2);System.out.println(ret3);}
}

執行結果:

4、createNewFile,delete,deleteOnExit

先創造出一個文件,使用createNewFile方法,代碼如下:

public class IODemo4 {public static void main(String[] args) throws IOException {File f = new File("./test.txt");boolean ret1 = f.createNewFile();//根據 File對象,?動創建?個空?件。成功創建后返回 trueSystem.out.println(ret1);}
}

執行代碼前:

執行代碼后:

多了test.txt文件

delete方法刪除test.txt文件,代碼如下:

public class IODemo4 {public static void main(String[] args) throws IOException {File f = new File("./test.txt");boolean ret1 = f.createNewFile();//根據 File對象,?動創建?個空?件。成功創建后返回 trueSystem.out.println(ret1);boolean ret = f.delete();//根據 File 對象,刪除該?件。成功刪除后返回 true?System.out.println(ret);}
}

執行結果:

test.txt文件沒有了。

deleteOnExit方法,在程序執行完后才會刪除指定的文件,代碼如下:

public class IODemo4 {public static void main(String[] args) throws IOException, InterruptedException {File f = new File("./test.txt");boolean ret1 = f.createNewFile();//根據 File對象,?動創建?個空?件。成功創建后返回 trueSystem.out.println(ret1);//根據 File 對象,標注?件將被刪除,刪除動作會到 JVM 運?結束時才會進?f.deleteOnExit();Thread.sleep(5000);}
}

執行前:

有test.txt文件。

執行后:

過5秒后才會刪除test.txt文件。

5、list,listFiles,mkdir,mkdirs,renameTo方法

list:

代碼如下:

public class IODemo5 {public static void main(String[] args) {File f = new File(".");String[] files = f.list();//返回 File 對象代表的?錄下的所有?件名System.out.println(Arrays.toString(files));}
}

執行結果:

listFiles:

代碼如下:

public class IODemo5 {public static void main(String[] args) {
//        String[] files = f.list();//返回 File 對象代表的?錄下的所有?件名
//        System.out.println(Arrays.toString(files));File f = new File(".");File[] files = f.listFiles();//返回File對象代表的?錄下的所有?件,以File對象表?System.out.println(Arrays.toString(files));}
}

執行結果:

mkdir:

代碼如下:

public class IODemo6 {public static void main(String[] args) {File f = new File("./aaa");//創建 File 對象代表的?錄boolean ret1 = f.mkdir();System.out.println(ret1);}
}

執行前:

執行后:

多出了aaa目錄。

mkdirs:

代碼如下:

public class IODemo7 {public static void main(String[] args) {File f = new File("./aaa/bbb/ccc");//創建 File 對象代表的?錄,如果必 要,會創建中間?錄boolean ret = f.mkdirs();System.out.println(ret);}
}

執行前:

執行后:

當前目錄下多了aaa/bbb/ccc。

renameTo:

代碼如下:

public class IODemo8 {public static void main(String[] args) {File src = new File("./test2.txt");File dest = new File("./test.txt");src.renameTo(dest);//進??件改名,也可以視為我們平時的剪切、粘貼操作}
}

執行前:

文件名是test.txt。

執行后:

文件名是test2.txt。

除重命名功能外,renameTo還有移動功能(移動比復制、粘貼效率高,前提是在同一硬盤上)。


都看到這了,點個贊再走吧,謝謝謝謝謝

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

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

相關文章

龍蜥 Anolis OS8.4 設置IP

1、配置文件路徑 /etc/sysconfig/network-scripts/ [rootlocalhost ~]# cd /etc/sysconfig/network-scripts/ [rootlocalhost network-scripts]# ls ifcfg-ens32 進入配置文件路徑后,展示。ifcfg-ens32這個不同的服務器不一樣,本次虛擬機所對應的是ens3…

掌握AI文本生成的關鍵:深入解析Prompt、Token和Completions

在當今時代,人工智能(AI)技術的迅速發展已經成為我們生活和工作中不可或缺的一部分。特別是在自然語言處理(NLP)領域,生成式AI技術,如GPT-4和ChatGPT等,已經成為熱點。為了更好地理解…

2. vue 工程創建

1. 基于 vite創建 官方文檔: https://v3.cn.vuejs.org/guide/installation.html#vite vite官網: https://vitejs.cn 使用vite創建的優勢: 開發環境中,無需打包操作,可快速的冷啟動。輕量快速的熱重載(HMR)。真正的按需編譯,不再…

CSS列表屬性

CSS列表屬性 列表相關的屬性&#xff0c;可以作用在 ul、ol、li 元素上。 代碼如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>列表相關屬性</title><style>ul {/* …

牛客網C++專項題目整理(1)

1. 若有定義語句:char s[3][10],(*k)[3],*p;則以下賦值語句錯誤的是 1.p s; 2.p k; 3.p s[0]; 4.k s; 答案&#xff1a;124 char s[3][10] s 是數組指針&#xff0c;類型為char (*)[3]&#xff0c;所指向的每個數組長度為10; char (*k)[3] k是一個數組指針&a…

國內哪個工具可以平替chatgpt?國內有哪些比較好用的大模型gpt?

我自己試用了很多的平臺&#xff0c;發現三個比較好的大模型平臺&#xff0c;對普通用戶也比較的友好的&#xff0c;而且返回內容相對來說&#xff0c;正確率更高的&#xff0c;并且相關場景插件比較豐富的國內廠商。 本文說的&#xff0c;是我自己覺得的&#xff0c;比較有主觀…

拆幀神器:深度解讀Netty中的DelimiterBasedFrameDecoder()

歡迎來到我的博客&#xff0c;代碼的世界里&#xff0c;每一行都是一個故事 拆幀神器&#xff1a;深度解讀Netty中的DelimiterBasedFrameDecoder 前言基礎概念分隔符的配置與選擇幀的拆分與重組幀的拆分過程&#xff1a;處理分隔符位于幀中間的情況&#xff1a; 處理半包與粘包…

AI時代,我們需要什么能力?

AI 時代&#xff0c;一定會重構很多行業&#xff0c;也會重構人民的生活工作方式&#xff0c;那么 AI 時代&#xff0c;我們需要培養什么能力呢&#xff1f; 我們應該去做那些 AI 做不了的事情&#xff01;讓 AI 成為我們的工具&#xff0c;助力我們更高效的解決問題&#xff…

【IO流系列】字符流練習(拷貝、文件加密、修改文件數據)

字符流練習 練習1&#xff1a;文件夾拷貝1.1 需求1.2 代碼實現1.3 輸出結果 練習2&#xff1a;文件加密與解密2.1 需求2.2 代碼實現2.3 輸出結果 練習3&#xff1a;修改文件數據&#xff08;常規方法&#xff09;3.1 需求3.2 代碼實現3.3 輸出結果 練習4&#xff1a;修改文件數…

day14:棧排序

問題描述&#xff1a; 棧排序。 編寫程序&#xff0c;對棧進行排序使最小元素位于棧頂。最多只能使用一個其他的臨時棧存放數據&#xff0c;但不得將元素復制到別的數據結構&#xff08;如數組&#xff09;中。該棧支持如下操作&#xff1a;push、pop、peek 和 isEmpty。當棧…

【MySQL】查詢語句:條件、排序和分頁

基本查詢 MySQL 數據庫使用SELECT語句來查詢數據。 查詢字段 以下為在MySQL數據庫中查詢數據通用的 SELECT 語法&#xff1a; SELECT 字段名,字段名... FROM 表名;選擇全部列 SELECT * FROM emp; -- 查詢所有字段一般情況下&#xff0c;除非需要使用表中所有的字段數據&…

消防主機報故障時發出故障及原因及解決辦法!

本文以青鳥消防JBF-11SF為例。 其他型號或品牌的消防主機也可參考。 開機前&#xff0c;必須先測量系統接線的絕緣電阻&#xff0c;確保各絕緣電阻滿足以下要求&#xff1a; 1&#xff09;空載時各電路信號線之間的絕緣值應大于5K歐姆。 2&#xff09;正常天氣條件下&#x…

Java SE:反射

反射作用 獲取字節碼文件里面的所有信息&#xff0c;包括構造方法、成員、成員方法&#xff0c;以及修飾他們的修飾符、類型和方法的返回值等等&#xff0c;只要是類里面的內容都能獲取&#xff0c;獲取之后可以動態的調用方法&#xff0c;動態的創建對象 獲取類字節碼文件對象…

2024全國水科技大會暨新材料在水污染防治中的應用論壇(十)

召集人&#xff1a;唐 量 上海大學環境與化學工程學院教授 莊贊勇 福州大學材料科學與工程學院教授 一、會議背景 為積極應對“十四五”期間我國生態環境治理面臨的挑戰&#xff0c;加快生態環境科技創新&#xff0c;構建綠色技術創新體系&#xff0c;全面落實科學技術部、生…

創建hadoop集群

分布式hadoop集群分布 服務器功能規劃 node-1&#xff1a;namenode,datanode,nodemanager,historyserver node-2&#xff1a;resourcemanage,datanode,nodemanager node-3&#xff1a;datanode&#xff0c;nodemanager&#xff0c;secondarynamenode #在node-1上 $ bin/hdfs …

點云數據結構化與體素化理論學習

一、PCD點云數據存儲格式的進一步認識 &#xff08;一&#xff09;PCD點云存儲格式相較于其它存儲格式&#xff08;如PLY、STL、OBJ、X3D等&#xff09;的優勢[1] &#xff08;1&#xff09;具有存儲和處理有組織的點云數據集的能力&#xff0c;這對于實時應用和增強現實及機器…

20240302-1-ZooKeeper面試題(三)

21. 集群最少要幾臺機器&#xff0c;集群規則是怎樣的? 集群規則為 2N1 臺&#xff0c;N>0&#xff0c;即 3 臺。 22. 集群支持動態添加機器嗎&#xff1f; 其實就是水平擴容了&#xff0c;Zookeeper 在這方面不太好。兩種方式&#xff1a;第 62 頁 共 485 頁全部重啟&a…

【Spring連載】使用Spring Data訪問 MongoDB----對象映射之非包裝類型

【Spring連載】使用Spring Data訪問 MongoDB----對象映射之非包裝類型 一、未包裝類型映射二、未包裝類型字段名三、查詢未包裝對象3.1 按未包裝字段排序3.2 未包裝對象的字段投影3.3 未包裝對象的Query By Example3.4 未包裝對象的存儲庫查詢 四、更新未包裝對象五、未包裝對象…

蒼穹外賣學習 Day10 Day11 Day12

前言 用于記錄蒼穹外賣Day10、Day11、Day12的學習 Day10 訂單狀態定時處理 來電提醒 客戶催單 訂單狀態定時處理 Spring Task Spring Task是一個任務調度工具&#xff0c;可以按照約定的時間自動執行某個代碼邏輯&#xff08;定時自動執行某段Java代碼&#xff09; cron表…

代碼隨想錄算法訓練營第三十天| 回溯篇總結

文章目錄 前言一、組合問題二、切割問題三、子集問題四、排列問題五、性能分析總結 前言 回溯法就是暴力搜索&#xff0c;并不是什么高效的算法&#xff0c;最多再剪枝一下。 組合問題&#xff1a;N個數里面按一定規則找出k個數的集合 排列問題&#xff1a;N個數按一定規則全…