IO(File 递归)
File概述
java.io.File類(lèi):文件和目錄路徑名的抽象表示形式。
用來(lái)描述電腦中文件,文件夾,以及路徑類(lèi)
常用的3個(gè)和File有關(guān)的單詞:
file:文件
directory:文件夾(目錄)
path:路徑
File是一個(gè)與系統(tǒng)無(wú)關(guān)的類(lèi)
File類(lèi)的3個(gè)重載的構(gòu)造方法
路徑:
window系統(tǒng)的目錄分隔符是一個(gè)\
java中的目錄分隔符是:\\或者/
路徑的分類(lèi):
絕對(duì)路徑:以盤(pán)符開(kāi)始的路徑
例如:D:\\ase\\20170514\\day10
D:\\Work_EE_266\\day10\\src
相對(duì)路徑:相對(duì)于當(dāng)前項(xiàng)目來(lái)說(shuō),路徑編寫(xiě)的時(shí)候可以省略盤(pán)符到項(xiàng)目之間的路徑
D:\\Work_EE_266\\day10-->src
注意:路勁不區(qū)分大小寫(xiě)的
File(File parent, String child)
傳遞路徑,傳遞 File 類(lèi)型父路徑,字符串類(lèi)型子路徑
好處:父路徑是 File 類(lèi)型,父路徑可以直接調(diào)用 File 類(lèi)的方法
File(String parent, String child)
傳遞路徑,傳遞字符串類(lèi)型父路徑,字符串類(lèi)型的子路徑
好處:單獨(dú)操作父路徑和子路徑,使用起來(lái)比較靈活,可以把路徑單獨(dú)作為參數(shù)傳遞過(guò)來(lái)
File(String pathname)
傳遞路徑名:可以寫(xiě)文件夾,也可以寫(xiě)到一個(gè)文件
c:\\abc c:\\abc\\Demo.java
路徑存不存在都可以創(chuàng)建,路徑不區(qū)分大小寫(xiě)
File類(lèi)的創(chuàng)建和刪除功能
File 類(lèi)的刪除功能
boolean delete()
刪除文件或者文件夾,在 File 構(gòu)造方法中給出
刪除成功返回 true,刪除失敗返回 false(不存在,文件夾中有內(nèi)容)
刪除方法不走回收站,直接從硬盤(pán)刪除
刪除有風(fēng)險(xiǎn),運(yùn)行需謹(jǐn)慎
File 創(chuàng)建文件夾功能
boolean mkdir() 只能創(chuàng)建單層文件夾
boolean mkdirs() 既能創(chuàng)建單層文件夾,又能創(chuàng)建多層文件夾
創(chuàng)建的路徑也在 File 構(gòu)造方法中給出
如果文件夾已經(jīng)存在,不在創(chuàng)建
File 創(chuàng)建文件的功能
boolean createNewFile()
創(chuàng)建的文件路徑和文件名,在 File 構(gòu)造方法中給出
如果文件已經(jīng)存在,不在創(chuàng)建返回 false
只能創(chuàng)建文件,不能創(chuàng)建文件夾(看類(lèi)型,不要看后綴)
創(chuàng)建文件夾的路徑,必須存在
File類(lèi)的判斷功能
boolean isDirectory()
判斷 File 構(gòu)造方法中封裝的路徑是不是文件夾
如果是文件夾就返回 true,如果不是文件夾就返回 false
boolean isFile()
判斷 File 構(gòu)造方法中封裝的路徑是不是文件
boolean exists()
判斷 File 構(gòu)造方法中封裝路徑是否存在
存在就返回 true,不存在就返回 false
File類(lèi)的獲取功能
String getParent() 返回 String 對(duì)象
File getParentFile() 返回 File 對(duì)象
獲取父路徑,返回的是文件末尾的父路徑
long length()
返回路徑中表示的文件的字節(jié)數(shù),文件夾沒(méi)有大小
String getPath() 將此抽象路徑名轉(zhuǎn)換為一個(gè)路徑名字符串。
和 toString 一樣
String getName()
返回路徑中表示的文件或者文件夾名
獲取路徑中最后部分的名字
File getAbsoluteFile() 返回此抽象路徑名的絕對(duì)路徑名形式。
String getAbsolutePath() 返回此抽象路徑名的絕對(duì)路徑名字符串。
獲取絕對(duì)路徑
遍歷目錄的方法list和listFiles
注意事項(xiàng):
1.被遍歷的路徑只能是一個(gè)目錄
2.被遍歷的目錄必須存在
否則就會(huì)拋空指針異常
static File[] listRoots()
獲取系統(tǒng)中所有根目錄
File[] listFiles()
獲取到 File 構(gòu)造方法中封裝的路徑中的文件和文件夾名(遍歷一個(gè)目錄)
返回的是目錄或者文件的全路徑
String[] list()
獲取到 File 構(gòu)造方法中封裝的路徑中的文件和文件夾名(遍歷一個(gè)目錄)
返回的只有名字
遞歸
遞歸:方法自己調(diào)用自己
分類(lèi):
遞歸分為兩種,直接遞歸和間接遞歸。
直接遞歸稱(chēng)為方法自身調(diào)用自己。間接遞歸可以A方法調(diào)用B方法,B方法調(diào)用C方法,C方法調(diào)用A方法。
注意:
1.遞歸一定要有條件限定,保證遞歸能夠停止下來(lái),否則會(huì)發(fā)生棧內(nèi)存溢出。
2.在遞歸中雖然有限定條件,但是遞歸次數(shù)不能太多。否則也會(huì)發(fā)生棧內(nèi)存溢出。
3.構(gòu)造方法,禁止遞歸
文件過(guò)濾器
文件的過(guò)濾器:
需求:遍歷hello文件夾,只獲取文件夾中的.java結(jié)尾的文件
c:\\hello
c:\\hello\\demo.txt
c:\\hello\\Hello.java
在File類(lèi)中l(wèi)istFiles()方法是遍歷文件夾的方法
有兩個(gè)和 listFiles重載的方法,參數(shù)傳遞的就是過(guò)濾器
File[] listFiles(FileFilter filter)
File[] listFiles(FilenameFilter filter)
返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿(mǎn)足指定過(guò)濾器的文件和目錄。
發(fā)現(xiàn)方法的參數(shù)FileFilter和FilenameFilter是接口
所有我們需要自己定義接口的實(shí)現(xiàn)類(lèi),重寫(xiě)接口中的方法accept,實(shí)現(xiàn)過(guò)濾功能
斷點(diǎn)調(diào)試
debug斷點(diǎn)調(diào)試
f6:逐行執(zhí)行
f5:進(jìn)入到方法中
f7:結(jié)束方法
f8:跳到下一個(gè)斷點(diǎn)
watch:捕獲
轉(zhuǎn)載于:https://www.cnblogs.com/caigq/p/7049064.html
總結(jié)
以上是生活随笔為你收集整理的IO(File 递归)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [原创]OpenvSwitch安装
- 下一篇: 上拉数据加载