Java IO(一)

File類

Java文件類以抽象的方式代表文件名和目錄路徑名早龟,該類主要用于文件和目錄的創(chuàng)建、文件的查找和文件的刪除等

File對象代表磁盤中實際存在的文件和目錄步清。通過以下構(gòu)造方法創(chuàng)建一個File對象

File類的構(gòu)造函數(shù)

image.png

演示代碼:

import java.io.File;

public class Test {
    public static void main(String[] args) {
        // 根據(jù)給定路徑字符串創(chuàng)建
        String pathName = "f:\\a\\b\\hello.java";
        // 將文件封裝成File對象辆它,注意:有不存在的文件變成對象
        File file = new File(pathName);
        System.out.println(file);
        
        // 根據(jù)父路徑和子路徑創(chuàng)建
        String father = "f:\\a\\b";
        String son = "hello.java";
        File file2 = new File(father, son);
        System.out.println(file2);
        
        // 根據(jù)父路徑封裝的對象和子路徑
        String father2 = "f:\\a\\b";
        File file3 = new File(father2);
        String son2 = "hello.java";
        File file4 = new File(file3, son2);
        System.out.println(file4);  
    }
}

File類的獲取

image.png
import java.io.File;

public class Test1 {
    public static void main(String[] args) {
        // 創(chuàng)建文件對象
        File file = new File("test.java");
        
        // 獲取文件的絕對路徑
        String absPath = file.getAbsolutePath();
        System.out.println(absPath);             // F:\workspace\day22\test.java
        
        // 獲取封裝路徑,File中封裝是什么路徑就獲得什么
        String path = file.getPath();
        System.out.println(path);               // test.java
        
        // 獲取文件名
        String fileName = file.getName();
        System.out.println(fileName);           // test.java
        
        // 獲取大小
        long size = file.length();
        System.out.println(size);               // 0
    }
}

文件和文件夾的創(chuàng)建刪

image.png
import java.io.File;
import java.io.IOException;


public class Test2 {
    public static void main(String[] args) throws IOException {
        File file = new File("e:\\test.txt");
        
        // 創(chuàng)建文件,如果文件不存在創(chuàng)建返回true;存在返回false
        boolean b1 = file.createNewFile();
        
        // 刪除文件
        boolean b2 = file.delete();
        
        // 判斷文件是否存在
        boolean b3 = file.exists();
        
        // 創(chuàng)建目錄
        File dir = new File("e:\\a\\b\\c");
        boolean b4 = dir.mkdir();
        
        // 判斷文件還是目錄,必須先判斷是否存在
        File file2 = new File("e:\\a\\b\\c");
        boolean b5 = file2.isFile();
        boolean b6 = file2.isDirectory();   
    }
}

目錄

文件都存放在目錄(文件夾)中,那么如何獲取一個目錄中的所有文件或者目錄中的文件夾呢堡赔?那么我們先想想,一個目錄中可能有多個文件或者文件夾设联,那么如果File中有功能獲取到一個目錄中的所有文件和文件夾加匈,那么功能得到的結(jié)果要么是數(shù)組,要么是集合

import java.io.File;

public class Test4 {
    public static void main(String[] args) {
        File dir = new File("f:\\workspace");
        // 獲取目錄下的文件及文件夾名稱
        String[] names = dir.list();
        for(String name: names){
            System.out.println(name);
        }
        
        // 獲取目錄下的文件對象
        File[] files = dir.listFiles();
        for(File file: files){
            System.out.println(file);
        }
    }
}

文件過濾器

通過listFiles()方法仑荐,我們可以獲取到一個目錄下的所有文件和文件夾,但能不能對其進行過濾呢纵东?比如我們只想要一個目錄下的指定擴展名的文件粘招,或者包含某些關(guān)鍵字的文件夾呢?

我們是可以先把一個目錄下的所有文件和文件夾獲取到偎球,并遍歷當前獲取到所有內(nèi)容洒扎,遍歷過程中在進行篩選辑甜,但是這個動作有點麻煩,Java給我們提供相應的功能來解決這個問題

File類中重載的listFile方法袍冷,并指定過濾器

image.png

image.png

獲取擴展名為.java的所有文件

public class Test {
    public static void main(String[] args) {
        // 獲取擴展名為.java所有文件
        // 創(chuàng)建File對象
        File file = new File("E:\\code\\day11_code");
        // 獲取指定擴展名的文件,由于要對所有文件進行擴展名篩選磷醋,
        // 因此調(diào)用方法需要傳遞過濾器
        File[] files = file.listFiles(new MyFileFilter());
        // 遍歷獲取到的所有符合條件的文件
        for (File f : files) {
            System.out.println(f);
        }
    }

過濾器

// 定義類實現(xiàn)文件名稱FilenameFilter過濾器
class MyFileFilter implements FilenameFilter{
    public boolean accept(File dir, String name) {
        return name.endsWith(".java");
    }
}

遞歸打印所有子目錄中的文件路徑

編寫一個方法用來打印指定目錄中的文件路徑,并進行方法的調(diào)用
要求:若指定的目錄有子目錄胡诗,那么把子目錄中的文件路徑也打印出來

import java.io.File;

public class Test6 {
    public static void main(String[] args) {
        File file = new File("f:\\workspace");
        getAllfile(file);   
    }

    public static void getAllfile(File file) {
        File[] files = file.listFiles();
        // 遍歷當前目錄下所有文件和文件夾
        for(File f:files){
            // 判斷當前遍歷的是否為目錄
            if(f.isDirectory()){
                // 是目錄,繼續(xù)獲取這個目錄下的所在文件和文件夾
                getAllfile(f);
            }else{
                // 不是目錄邓线,打印出來
                System.out.println(f);
            }
        }   
    }
}

搜索指定目錄中的.java文件(含子目錄)

只需要在listFiles(new FilenameFilter)添加一個過濾器

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市煌恢,隨后出現(xiàn)的幾起案子骇陈,更是在濱河造成了極大的恐慌,老刑警劉巖瑰抵,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件你雌,死亡現(xiàn)場離奇詭異,居然都是意外死亡二汛,警方通過查閱死者的電腦和手機婿崭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肴颊,“玉大人氓栈,你說我怎么就攤上這事∩徊” “怎么了颤绕?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長祟身。 經(jīng)常有香客問我奥务,道長,這世上最難降的妖魔是什么袜硫? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任氯葬,我火速辦了婚禮,結(jié)果婚禮上婉陷,老公的妹妹穿的比我還像新娘帚称。我一直安慰自己,他們只是感情好秽澳,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布闯睹。 她就那樣靜靜地躺著,像睡著了一般担神。 火紅的嫁衣襯著肌膚如雪楼吃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天,我揣著相機與錄音孩锡,去河邊找鬼酷宵。 笑死,一個胖子當著我的面吹牛躬窜,可吹牛的內(nèi)容都是我干的浇垦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼荣挨,長吁一口氣:“原來是場噩夢啊……” “哼男韧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起垦沉,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤煌抒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厕倍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寡壮,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年讹弯,在試婚紗的時候發(fā)現(xiàn)自己被綠了况既。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡组民,死狀恐怖棒仍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情臭胜,我是刑警寧澤莫其,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站耸三,受9級特大地震影響乱陡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仪壮,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一憨颠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧积锅,春花似錦爽彤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至箫爷,卻和暖如春匙瘪,著一層夾襖步出監(jiān)牢的瞬間铆铆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工丹喻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翁都。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓碍论,卻偏偏與公主長得像,于是被迫代替她去往敵國和親柄慰。 傳聞我的和親對象是個殘疾皇子鳍悠,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)坐搔,斷路器藏研,智...
    卡卡羅2017閱讀 134,695評論 18 139
  • 1 IONo18 1.1IO框架 【 IO:Input Output 在程序運行的過程中,可能需要對一些設備進...
    征程_Journey閱讀 966評論 0 1
  • 一概行、基礎(chǔ)知識:1蠢挡、JVM、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機...
    殺小賊閱讀 2,388評論 0 4
  • 文/寒霜 【原創(chuàng)】 七律·賞春 水秀山明嵐靄繞凳忙,風高云淡碧波流业踏。 河堤郁郁楊花密,曲徑萋萋野草幽涧卵。 次第花開畦上彩...
    劉寒霜閱讀 742評論 9 20
  • 我想把自己全身變成藍色 然后在頭上戴著皇冠 我要用魔法 讓這個世界沒有冬天勤家, 天天都是夏天, 大家都住在我變得冰城...
    古月汐_9a31閱讀 229評論 0 0