Java类之File记录
做文件讀取寫入的時(shí)候,要用到一個(gè)類: File,這里簡(jiǎn)單記錄。
構(gòu)造方法,傳入一個(gè)字符串,絕對(duì)路徑和相對(duì)路徑都可以,文件名或者文件夾也可以:
public File(String pathname) 還有其它三個(gè)方法,不過(guò)個(gè)人認(rèn)為用處好像不大,不表。 使用方式就是new一個(gè): File file = new File(fileName);特別要注意的是這里的一個(gè)File對(duì)象,真的就只是一個(gè)對(duì)象而已,和你電腦上那個(gè)實(shí)際的文件,沒(méi)半毛錢關(guān)系,它只是一個(gè)普通對(duì)象,持有了這個(gè)文件名,然后解析出了其它的一點(diǎn),比如文件名啊,文件系統(tǒng)類型啊,分隔符啥的。
提供了一些還有點(diǎn)用的方法:
1、獲取文件名,如果是文件的話,就是文件名,如果是文件夾,那就是文件夾名咯?如果是以“./test.txt”這種形式的話,結(jié)果就是test.txt,如果傳這個(gè)“./”,那直接就是“.”了:
public String getName()2、獲取上級(jí)文件名:
public String getParent()3、獲取上級(jí)文件:
public File getParentFile()4、判斷是否是絕對(duì)路徑:
public boolean isAbsolute()5、獲取對(duì)應(yīng)的絕對(duì)路徑:
public String getAbsolutePath()6、獲取絕對(duì)路徑形式的一個(gè)File實(shí)例:
public File getAbsoluteFile()7、獲取路徑,這種路徑是標(biāo)準(zhǔn)格式的路徑,對(duì)于win上,會(huì)返回可以直接用來(lái)放到文件夾的地址欄里打開(kāi):
public String getCanonicalPath()這個(gè)方法和上面的兩個(gè)方法有點(diǎn)區(qū)別,表述起來(lái)不方便,一張圖說(shuō)明差異:
8、獲取上面方法的地址對(duì)應(yīng)的File實(shí)例:
public File getCanonicalFile()9、還能toURI,也不知道啥時(shí)候有用哦:
public URI toURI()10、判斷此File實(shí)例對(duì)應(yīng)的真實(shí)文件是否可讀,這個(gè)有點(diǎn)用:
public boolean canRead()11、有可讀判斷自然有可寫判斷:
public boolean canWrite()12、還有是否存在的判斷:
public boolean exists()13、判斷是否是文件夾?是路徑?是目錄?反正就是不是文件的那個(gè)東西:
public boolean isDirectory()14、判斷是否是文件:
public boolean isFile()15、還能判斷是否是隱藏文件:
public boolean isHidden()16、上次修改時(shí)間,返回一個(gè)long形式的數(shù)字。。。:
public long lastModified()17、文件長(zhǎng)度,返回的是個(gè)long形數(shù)字,表示這個(gè)實(shí)際文件的字節(jié)數(shù)(byte):
public long length()用在哪?讀取文件的時(shí)候,如果想整個(gè)讀出來(lái),比如有一個(gè)不大不小的文本文件,想整個(gè)讀取出來(lái),就需要先準(zhǔn)備好一個(gè)byte數(shù)組了,數(shù)組長(zhǎng)度多少比較好呢?可不就是這個(gè)長(zhǎng)度了嘛:
byte[] filecontent = new byte[filelength.intValue()];18、還可以創(chuàng)建個(gè)新的文件,當(dāng)然了,只有文件不存在才會(huì)創(chuàng)建并返回true,如果文件存在就不創(chuàng)建了并返回false:
public boolean createNewFile()而如果指定的文件里帶路徑并且路徑不存在,就直接報(bào)錯(cuò)了:
19、刪除文件,這下和機(jī)器上的實(shí)際文件掛上鉤了:
public boolean delete()20、JVM退出時(shí)刪除文件???:
public void deleteOnExit()從最普通的main方法里看,main方法退出的時(shí)候,這個(gè)文件刪除了,不確定web項(xiàng)目的話什么時(shí)候會(huì)進(jìn)行刪除操作。
21、獲取當(dāng)前路徑下(如果是路徑的話)的所有文件名:
public String[] list()如果不是路徑而是個(gè)普通文件,該方法返回null。
如果是路徑,也不保證返回的數(shù)組里文件名的順序,據(jù)說(shuō)是特別不要想著會(huì)以字母表順序返回。本人測(cè)試時(shí)發(fā)現(xiàn)在win里好像是以排列順序返回的,不過(guò)排列順序這玩意,它叫我們不要信,那我們就認(rèn)為是亂序的吧,真要排序就拿來(lái)自己排一下。
22、獲取當(dāng)前路徑下所有文件名對(duì)應(yīng)的File實(shí)例數(shù)組:
public File[] listFiles(FilenameFilter filter)這里的FilenameFilter只是一個(gè)接口,使用的時(shí)候可以這樣:
特別注意這里需要重寫accept方法,接收的參數(shù)dir是當(dāng)前路徑,name就是路徑下的一個(gè)文件名,這里假設(shè)獲取當(dāng)前路徑下以.jpg結(jié)尾的所有File實(shí)例。
?23、用當(dāng)前傳入的路徑創(chuàng)建文件夾:
public boolean mkdir()注意這里只有當(dāng)只需要?jiǎng)?chuàng)建最后一節(jié)路徑的文件夾時(shí)才會(huì)創(chuàng)建成功,否則會(huì)創(chuàng)建失敗返回一個(gè)false。
比如,傳入的路徑是這樣:E:\game\test\test1,那就只有當(dāng)E盤下game和test都是已經(jīng)存在的文件夾時(shí),才會(huì)創(chuàng)建最后那一節(jié)test1作為文件夾,否則就會(huì)創(chuàng)建失敗。要想在game和test文件夾都不存在的情況下創(chuàng)建成功,請(qǐng)用下面這個(gè)方法:
24、創(chuàng)建指定的任意合法的路徑文件夾,上級(jí)文件夾不存在的話也會(huì)創(chuàng)建上級(jí)文件夾。
public boolean mkdirs()當(dāng)然,這兩個(gè)方法都是只創(chuàng)建成文件夾,哪怕傳入的是.../.../test.txt這種形式的參數(shù),也是一個(gè)文件夾,不要想著會(huì)是一個(gè)txt文件。
25、重命名為另外一個(gè)File實(shí)例指定的文件名:
public boolean renameTo還有幾個(gè)修改文件可讀可寫可執(zhí)行的方法,不表。
?
靜態(tài)方法:
26、獲取當(dāng)前系統(tǒng)根目錄:
public static File[] listRoots()win上就是c, d, e, f...之類的路徑,linux沒(méi)實(shí)驗(yàn),據(jù)說(shuō)就是一個(gè)斜杠表示的根目錄(/)。
27、還有個(gè)方法,生成臨時(shí)文件:
public static File createTempFile也是靜態(tài)方法,描述上說(shuō)是生成臨時(shí)文件,可傳入三個(gè)參數(shù),依次是,前綴,后綴,路徑。生成的文件如下:
真的在這個(gè)位置生成了一個(gè)這樣的文件,當(dāng)然,是空的。和createNewFile方法還是有區(qū)別的,createNewFile方法需要先有一個(gè)File實(shí)例,然后才可以生成文件,而這個(gè)直接是個(gè)靜態(tài)方法。createNewFile方法不會(huì)生成隨機(jī)串在文件名里,這個(gè)方法會(huì)。
據(jù)說(shuō)這個(gè)方法生成的文件就適合配合deleteOnExit方法使用。呵。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/lihan829/p/9557674.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Java类之File记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 深入浅出CSS(二):关于雪碧图、bac
- 下一篇: java虚拟机 第二章Java内存区域与