File類和項(xiàng)目

1.File類

1.1File類概述

? ? SUN公司提供給程序員操作文件以及文件夾對應(yīng)的類入偷。這里涉及到對于文件以及文件夾的增刪改查操作

? ? ? ? 不能操作文件內(nèi)容,不能對于文件進(jìn)行讀寫操作殿雪。IO流內(nèi)容

1.2路徑問題

? ? 相對路徑

? ? 以你當(dāng)前的路徑為參照物

? ? 絕對路徑

? ? 唯一明確的路徑

開發(fā)中

? ? 相對路徑

? ? 針對當(dāng)前工作目錄丙曙,去往其他目錄最短路徑,相對路徑

? ? .當(dāng)前工作目錄

? ? ..當(dāng)前工作目錄的上級目錄

? ? 絕對路徑

? ? Windows 操作系統(tǒng)絕對路徑是從當(dāng)前盤符開始扯旷,C D E F

? ? Linux macOS Unix 根目錄 / 所有路徑都是從根目錄開始钧忽,后期使用的服務(wù)器軟件都是采用對應(yīng)方式

1.3File類構(gòu)造方法

File(String pathName);

? ? 根據(jù)指定的文件路徑耸黑,或者文件夾路徑崎坊,創(chuàng)建對應(yīng)的File類對象奈揍。路徑是相對路徑男翰,可以是絕對路徑

File(String parent蛾绎,String childName)鸦列;

? ? 根據(jù)指定的父目錄文件夾路徑薯嗤,和子文件或者子文件夾的名字,創(chuàng)建對應(yīng)的File類對象

File(File parent镜粤,String childName)肉渴;

? ? 根據(jù)指定的父目錄File類對象同规,和子文件或者子文件的名字券勺,創(chuàng)建對應(yīng)的File類對象

【注意】

1文件名

2拓展名/后綴名/格式名

文件路徑分隔符

? ? Windows Linux 都支持 / 作為文件分隔符

? ? Windows 默認(rèn)采用 \ 作為文件分隔符 \\

? ? File.separator 根據(jù)當(dāng)前操作系統(tǒng),文件系統(tǒng)匹配文件分隔符

package com.test;

import java.io.File;

public class Demo3 {

public static void main(String[] args) {

File file1 = new File("H" + File.separator + "aaa" + File.separator + "1.txt");

File file2 = new File("H:/aaa/1.txt");

File file3 = new File("H:/aaa","1.txt");

File file4 = new File(new File("H:/aa"), "1.txt");

System.out.println(file1);

System.out.println(file2);

System.out.println(file3);

System.out.println(file4);

File file = new File(".");

System.out.println(file.getAbsolutePath());

File file5 = new File("..");

System.out.println(file5.getAbsolutePath());

}

}

1.4創(chuàng)建文件或者文件夾

boolean createNewFile()朱灿;

? ? 通過File類對象調(diào)用,創(chuàng)建File類對象中對應(yīng)地址的普通文件钠四,創(chuàng)建成功返回true盗扒,創(chuàng)建失敗返回false;

? ? 失敗原因

1路徑不合法缀去,路徑不存在侣灶,路徑錯(cuò)誤。

2對應(yīng)文件夾沒有寫入權(quán)限缕碎。

D:/aaa/bb/cc/1.txt

3對應(yīng)文件已經(jīng)存在

4磁盤壞掉褥影,電腦藍(lán)屏

boolean mkdir();

通過File類對象創(chuàng)建咏雌,創(chuàng)建File類對象中對應(yīng)的文件夾凡怎,創(chuàng)建成功返回true赊抖,返回失敗false

【原因】

1路徑不合法,路徑不存在浴鸿,路徑錯(cuò)誤

2對應(yīng)文件沒有寫入權(quán)限

3對應(yīng)文件夾已經(jīng)存在

4磁盤壞掉,電腦藍(lán)屏

boolean mkdirs();

操作很變態(tài)

創(chuàng)建文件夾過程中可以完成中間路徑

boolean renameTo(File dest);

? ? 通過File類對象調(diào)用,轉(zhuǎn)為目標(biāo)dest指定File類對象供填,可以操作普通文件,可以操作文件夾薇缅,移動(dòng)娩缰,重命名

package com.test;

import java.io.File;

import java.io.IOException;

public class Demo4 {

public static void main(String[] args) throws IOException {

File file = new File("C:\\Users\\Administrator\\Desktop");

boolean ret = file.createNewFile();

System.out.println("createNewFile :" + ret);

File file2 = new File("C:\\Users\\Administrator\\Desktop\\aaa");

boolean ret1 = file2.mkdir();

System.out.println("mkdir:" + ret1);

File file3 = new File("C:\\Users\\Administrator\\Desktop\\aaa\\12\\33\44\\54");

boolean mkdirs = file3.mkdir();

System.out.println("mkdir" + mkdirs);

File file6 = new File("C:\\Users\\Administrator\\Desktop\\1.txt");

File file7 = new File("C:\\Users\\Administrator\\Desktop\\nisafha.txt");

boolean renameTo = file6.renameTo(file7);

System.out.println("renameTo :" + renameTo);

}

}

1.5刪除文件或者文件夾

boolean delete()亲轨;

通過File類對象調(diào)用讯嫂,刪除File類對象對應(yīng)的文件或者文件夾

【注意】

1從磁盤中直接抹掉數(shù)據(jù)莉掂,慎用

2刪除操作只針對空文件夾操作曲楚,不能刪除非空文件夾

viod deleteOnExit();

? ? 程序退出之后鹤树,刪除調(diào)用該方法File類對象,對應(yīng)的普通文件或者文件夾

用于緩沖文件,緩存問題灭美,日志文件

package com.test;

import java.io.File;

import java.util.Scanner;

public class Demo5 {

public static void main(String[] args) {

File file = new File("C:\\Users\\Administrator\\Desktop\\1\\1.txt");

boolean delete = file.delete();

System.out.println("delete" + delete);

File file2 = new File("C:\\Users\\Administrator\\Desktop\\1\\ccc");

boolean delete2 = file2.delete();

System.out.println("delete" + delete2);

File file3 = new File("C:\\Users\\Administrator\\Desktop\\1\\2.txt");

file3.deleteOnExit();

new Scanner(System.in).nextLine();

}

}

1.6獲取文件或者文件夾數(shù)據(jù)

方法和文件或者文件夾是否存在無關(guān)

String getPath()犁苏;

獲取File類對象中保存路徑

String getName()助赞;

獲取File類對象操作對應(yīng)的文件名或者文件夾名

String getParent();

獲取File類對象操作文件或者文件夾的上級目錄

String getAbsolutePath()群叶;

獲取當(dāng)前File類隊(duì)象對應(yīng)路徑的絕對路徑

String path = “C : /aaa/bbb/1.txt”;

方法1

"C:/aaa/bbb/1.txt";

方法2

"1.txt"

lastindexOf()獲取/最后出現(xiàn)下標(biāo)

subString()截取上下標(biāo)之后字符串

方法3

"C:/aaa/bbb"

lastindexOf()獲取/最后出現(xiàn)下標(biāo)

subString()截取上下之前字符串

package com.test;

import java.io.File;

public class Demo6 {

public static void main(String[] args) {

File file = new File("D:/aaa/bbb/ccc/1.txt");

System.out.println(file.getPath());

System.out.println(file.getParent());

System.out.println(file.getName());

System.out.println(new File(".").getAbsolutePath());

System.out.println(new File(".").getAbsoluteFile());

}

}

1.7判斷方法

boolean isFile()约炎;

判斷當(dāng)前File類對象對應(yīng)的是不是普通文件

boolean isDirecyory()狸捕;

判斷當(dāng)前File類對象對應(yīng)的是不是文件夾

boolean exists();

判斷當(dāng)前File類對象對應(yīng)的內(nèi)容是否存在

boolean isAbsolute()轩性;

判斷當(dāng)前File類對象保存的路徑是不是絕對路徑

boolean isHidden();

判斷當(dāng)前File類對象對應(yīng)的文件是不是一個(gè)影藏文件

package com.test;

import java.io.File;

public class Demo7 {

public static void main(String[] args) {

File file = new File("C:/Users/53431/Desktop/aaa/ccc");

System.out.println("文件是否存在" + file.exists());

System.out.println("是否是普通文件" + file.isFile());

System.out.println("是否是文件夾" + file.isDirectory());

System.out.println("是否采用絕對路徑" + file.isAbsolute());

System.out.println("是否隱藏文件" + file.isHidden());

}

}

1.8文件列表法

static File[] listRoots()坑质;

獲取Windows操作系統(tǒng)下的所有盤符

Linux中沒有什么作用

String[] list();

獲取File類對象對應(yīng)文件夾中所有子文件或者子文件夾名字萎津,Striing類型數(shù)組

File[] listFile()遂黍;

獲取File類對象對應(yīng)文件夾中所有子文件或者子文件夾的File類對象數(shù)組


1.9FilenameFilter文件過濾器接口

FilenameFilter是文件名過濾器,用于File類的文件列表方法芬位,可以控制保存在列表中的數(shù)據(jù)內(nèi)容

boolean accept(File dir 永丝, String name)嗅辣;

dir是當(dāng)前操作獲取文件列表的文件夾File類對象

name是當(dāng)前文件夾下的文件名戶或者文件夾名

需要完成一個(gè)功能

存在一個(gè)文件夾杆兵,里面有各式各樣的文件和文件夾

想得到所有的【.java文件】

endsWith

isFile

package com.test;

import java.io.File;

import java.io.FilenameFilter;

public class Demoo {

public static void main(String[] args) {

File file = new File("C:\\Users\\Administrator\\Desktop\\aaa");

String[] list = file.list(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

return new File(dir, name).isFile()&& name.endsWith(".java");

}

});

for (String string : list) {

System.out.println(string);

}

System.out.println();

File[] listFiles = file.listFiles(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

return new File(dir, name).isFile() && name.endsWith(".java");

}

});

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末路克,一起剝皮案震驚了整個(gè)濱河市精算,隨后出現(xiàn)的幾起案子廉嚼,更是在濱河造成了極大的恐慌恐似,老刑警劉巖矫夷,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異更卒,居然都是意外死亡俯萌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門两疚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來床估,“玉大人,你說我怎么就攤上這事诱渤∝の祝” “怎么了?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵源哩,是天一觀的道長鞋吉。 經(jīng)常有香客問我鸦做,道長励烦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任泼诱,我火速辦了婚禮坛掠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘治筒。我一直安慰自己屉栓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布耸袜。 她就那樣靜靜地躺著友多,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堤框。 梳的紋絲不亂的頭發(fā)上域滥,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天纵柿,我揣著相機(jī)與錄音,去河邊找鬼启绰。 笑死昂儒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的委可。 我是一名探鬼主播渊跋,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼着倾!你這毒婦竟也來了拾酝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤卡者,失蹤者是張志新(化名)和其女友劉穎微宝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虎眨,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蟋软,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嗽桩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岳守。...
    茶點(diǎn)故事閱讀 38,683評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖碌冶,靈堂內(nèi)的尸體忽然破棺而出湿痢,到底是詐尸還是另有隱情,我是刑警寧澤扑庞,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布譬重,位于F島的核電站,受9級特大地震影響罐氨,放射性物質(zhì)發(fā)生泄漏臀规。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一栅隐、第九天 我趴在偏房一處隱蔽的房頂上張望塔嬉。 院中可真熱鬧,春花似錦租悄、人聲如沸谨究。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胶哲。三九已至,卻和暖如春潭辈,著一層夾襖步出監(jiān)牢的瞬間鸯屿,已是汗流浹背俩檬。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碾盟,地道東北人棚辽。 一個(gè)月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像冰肴,于是被迫代替她去往敵國和親屈藐。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評論 2 349