Java-IO流(一)

了解輸入輸出技術(shù)

            1犹褒,數(shù)據(jù)都在內(nèi)存中,想要把數(shù)據(jù)持久化正塌,需要使用系統(tǒng)中的一些輸入和輸出技術(shù)。
            2义钉,Java程序調(diào)用jvm椿争,jvm調(diào)用所在系統(tǒng)的輸入和輸出內(nèi)容完成Java程序的輸入和輸出亮曹。
            3猿推,簡單理解:內(nèi)容數(shù)據(jù)持久化到硬盤:輸出。將硬盤數(shù)據(jù)讀取到內(nèi)容運(yùn)算:輸入匪凉。后面還有很多的設(shè)備屉更。
            4,輸入和輸出結(jié)束洒缀;解決的問題是操作設(shè)備上的數(shù)據(jù)。
            5欺冀,java中的輸入輸出技術(shù)相關(guān)的對象都定義在java.io包树绩。

IO技術(shù)中的File對象

            1,描述文件和文件夾的對象隐轩。
            2饺饭,提供了和系統(tǒng)平臺相關(guān)的分隔符  File.separator
            3,提供了一些用于操作文件的方法职车。
                3.1 獲取操作:getXXX.獲取文件大小瘫俊,名稱,目錄悴灵,修改時間....
                3.2 增加 createNewFile():創(chuàng)建文件扛芽,mkdir():創(chuàng)建目錄 mkdirs():創(chuàng)建多級目錄。
                刪除delete()积瞒,判斷存在exists()川尖。
                3.3 注意:創(chuàng)建文件:文件已存在不創(chuàng)建,不存在則創(chuàng)建茫孔,該方法拋IOException叮喳。
                    刪除文件:文件不存在,以及文件存在正在被使用缰贝,刪除都為false馍悟。
                    刪除目錄:目錄內(nèi)容為空,可以直接刪除剩晴,目錄內(nèi)容不為空锣咒,刪除不了,必須從里往外刪李破。
                3.4 獲取目錄中的內(nèi)容宠哄。
                    String[] list():獲取目錄中的文件和文件夾名稱。
                    File[] listFiles():獲取目錄中的所有的文件和文件File對象嗤攻。
                    File[] listFiles(FileFilter):根據(jù)指定的文件過濾器進(jìn)行獲取毛嫉。
                    File[] listFiles(FilenameFilter):根據(jù)指定的文件名稱過濾器進(jìn)行獲取。

如何創(chuàng)建文件對象

import java.io.File;
public class FileDemo {

    public static void main(String[] args) {
        /*
         * File類的構(gòu)造函數(shù)妇菱。
         * 如何創(chuàng)建文件對象承粤。
         */
        String pathName = "/Users/yangxiooping/Desktop/test/hello.java";
        File f1 = new File(pathName);//將Test22文件封裝成File對象暴区。注意;有可以封裝不存在文件或者文件夾辛臊,變成對象仙粱。
        System.out.println(f1);
        
        
        File f2 = new File("/Users/yangxiooping/Desktop/test","hello1.java");
        System.out.println(f2);
        
        //將parent封裝成file對象。
        File dir = new File("/Users/yangxiooping/Desktop/test");
        File f3 = new File(dir,"hello2.java");
        System.out.println(f3);
        
        
        File f4 = new File(File.separator+"Users"+File.separator+"yangxiooping"+File.separator+"Desktop"+File.separator+"test"+File.separator+"hello3.java");
        System.out.println(f4);
    }
}

File獲取文件相關(guān)信息

import java.io.File;

public class FileDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {

        File file = new File("Test22.java");

        String absPath = file.getAbsolutePath();
        String path = file.getPath();//File中封裝的路徑是什么獲取到的就是什么彻舰。
        String filename = file.getName();
        long size = file.length();
        long time = file.lastModified();

        /*
            absPath=/Users/yangxiooping/Desktop/test/Test22.java
            path=Test22.java
            filename=Test22.java
            size=6934
            time=1532072939000
            2018年7月20日 下午03時48分59秒
         */
        System.out.println("absPath="+absPath);
        System.out.println("path="+path);
        System.out.println("filename="+filename);
        System.out.println("size="+size);
        System.out.println("time="+time);

//      毫秒值--Date--格式化--字符串文本
        String str_date = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG).format(new Date(time));
        System.out.println(str_date);
    }
}

File類中方法-文件以及文件夾的創(chuàng)建刪除存在

import java.io.File;
import java.io.IOException;

public class FileDemo {

    public static void main(String[] args) throws IOException {
        File file = new File("file.txt");

        /*
         * 創(chuàng)建文件伐割,如果文件不存在,創(chuàng)建 true 如果文件存在刃唤,則不創(chuàng)建 false隔心。 如果路徑錯誤,IOException尚胞。
         */
        // boolean b1 = file.createNewFile();
        // System.out.println("b1=" + b1);

        // 文件刪除硬霍,如果文件存在,返回true 如果文件不存在或者正在被使用笼裳,返回false唯卖。
        // boolean b2 = file.delete();//注意:不去回收站。慎用躬柬。
        // System.out.println("b2="+b2);

        // 需要判斷文件是否存在拜轨。
        // boolean b3 = file.exists();
        // System.out.println("b3="+b3);

        // 對目錄操作 創(chuàng)建,刪除楔脯,判斷撩轰。
        File dir = new File("file");
        // boolean b4 = dir.mkdirs();//創(chuàng)建多級目錄。//dir.mkdirs();
        // System.out.println("b4="+b4);

        boolean b5 = dir.delete();// 刪除目錄時昧廷,如果目錄中有內(nèi)容堪嫂,無法直接刪除。
//         // 只有將目錄中的內(nèi)容都刪除后木柬,保證該目錄為空皆串。這時這個目錄才可以刪除。
        System.out.println("b5=" + b5);

//         System.out.println("-----------判斷文件眉枕,目錄------------");
//         File f = new File("e:\\javahaha");//要判斷是否是文件還是目錄恶复,必須先判斷存在。
//         System.out.println(f.isFile());
//         System.out.println(f.isDirectory());
    }
}

對給定的目錄獲取內(nèi)部的文件和目錄

public class FileMethodDemo3 {

    public static void main(String[] args) {
        
        //需求:對給定的目錄獲取內(nèi)部的內(nèi)容速挑。
        File dir = new File("file");
        //健壯性判斷谤牡。1,必須是存在的姥宝,2翅萤,必須是目錄。否則容易引發(fā)返回數(shù)組為null腊满,出現(xiàn)NullPointerException
        String[] names = dir.list();//獲取的是目錄下的當(dāng)前的文件以及文件夾的名稱套么。
//      System.out.println(names);
        for(String name : names){
//          System.out.println(name);
        }
        
        File[] files = dir.listFiles();//獲取目錄下當(dāng)前文件以及文件對象培己。
        for(File file : files){
            System.out.println(file.lastModified());
        }
    }
}

File類中方法-過濾器

import java.io.File;
import java.io.FilenameFilter;
import java.io.FileFilter;

/*
 * 過濾文件加的過濾器。
 */
public class FileFilterByDir implements FileFilter {

    @Override
    public boolean accept(File pathname) {
    
        return pathname.isDirectory();
    }

}

/**
 * 用于過濾指定擴(kuò)展名的文件胚泌。
 */
public class FilenameFilterBySuffix implements FilenameFilter {
    private String suffix;
    public FilenameFilterBySuffix(String suffix) {
        super();
        this.suffix = suffix;
    }

    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith(suffix);
    }
}

public class FileMethodDemo4 {

    public static void main(String[] args) {
        /*
         * 需求2:獲取目錄中的內(nèi)容省咨,但是只要.java文件。
         */
        File dir = new File("file");

        File[] files = dir.listFiles(new FilenameFilterBySuffix(".java"));// 需要傳遞一個文件名過濾器 FilenameFilter對象玷室。
        
        /*listFiles源碼解析零蓉。
        public File[] listFiles(FilenameFilter filter) {//FilenameFilter filter = new FilenameFilterByJava()
            String ss[] = list();//調(diào)用了File類中的list()獲取到所有的名稱數(shù)組 ss。
            if (ss == null) return null;//健壯性判斷穷缤,如果數(shù)組為null壁公,就返回。
            ArrayList<File> files = new ArrayList<>();//創(chuàng)建一個集合绅项。元素是File類型。
            for (String s : ss)//遍歷名稱數(shù)組比肄。
                if ((filter == null) || filter.accept(this, s))//對遍歷的名稱進(jìn)行過濾器的判斷快耿。將 當(dāng)前目錄this,遍歷到名稱s傳遞給accept方法芳绩。
                            //一旦條件滿足過濾器的過濾條件掀亥。
                    files.add(new File(s, this));//將滿足過濾條件添加到集合中。添加是 將文件名稱和當(dāng)前目錄封裝成File對象妥色。new File(dir,name);
                    
            return files.toArray(new File[files.size()]);//將集合轉(zhuǎn)成數(shù)組返回搪花,為啥呢?不需要增刪操作嘹害。
        }
        */
        
        for (File file : files) {
            System.out.println(file.getName());
        }
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撮竿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子笔呀,更是在濱河造成了極大的恐慌幢踏,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件许师,死亡現(xiàn)場離奇詭異房蝉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)微渠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門搭幻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逞盆,你說我怎么就攤上這事檀蹋。” “怎么了纳击?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵续扔,是天一觀的道長攻臀。 經(jīng)常有香客問我,道長纱昧,這世上最難降的妖魔是什么刨啸? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮识脆,結(jié)果婚禮上设联,老公的妹妹穿的比我還像新娘。我一直安慰自己灼捂,他們只是感情好离例,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著悉稠,像睡著了一般宫蛆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上的猛,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天耀盗,我揣著相機(jī)與錄音,去河邊找鬼卦尊。 笑死叛拷,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的岂却。 我是一名探鬼主播忿薇,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼躏哩!你這毒婦竟也來了署浩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤扫尺,失蹤者是張志新(化名)和其女友劉穎瑰抵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體器联,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡二汛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拨拓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肴颊。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖渣磷,靈堂內(nèi)的尸體忽然破棺而出婿着,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布竟宋,位于F島的核電站提完,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丘侠。R本人自食惡果不足惜徒欣,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜗字。 院中可真熱鬧打肝,春花似錦、人聲如沸挪捕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽级零。三九已至断医,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奏纪,已是汗流浹背孩锡。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留亥贸,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓浇垦,卻偏偏與公主長得像炕置,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子男韧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

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

  • 導(dǎo)讀目錄 Java的NIO概述 使用Buffer(緩沖) 使用Channel(通道) 字符集和Charset 前面...
    ql2012jz閱讀 345評論 0 3
  • IO流(概述) 概述 IO流用來處理設(shè)備之間的數(shù)據(jù)傳輸 Java對數(shù)據(jù)的操作是通過流的方式 Java用于操作流的類...
    JerichoPH閱讀 241評論 0 0
  • 慚愧朴摊,編程幾年一直沒有系統(tǒng)了解下IO流,做技術(shù)還是要踏踏實實的一步一個腳印慢慢積累,欺騙生活最終被欺騙的是你自己此虑。...
    f36b3e910208閱讀 292評論 0 1
  • 20.01_IO流概述及其分類 IO流用來處理設(shè)備之間的數(shù)據(jù)傳輸 Java對數(shù)據(jù)的操作是通過流的方式 Java用于...
    苦笑男神閱讀 839評論 0 9
  • 前幾天做了一個夢甚纲,夢到自己需要重新參加高考。厚厚的參考書立即樹起一面高高的墻朦前,將自己擋在后面介杆,一腳踩空...
    賀鵬_5917閱讀 237評論 0 3