day35IO2

一垦垂、上節(jié)課回顧

1掀虎、線程池

理解為一個容器植影,裝有預(yù)先創(chuàng)建好的線程對象锋玲,執(zhí)行任務(wù)切平。執(zhí)行后歸還給線程池等待下次的任務(wù)退个。降低了程序的開銷:頻繁的創(chuàng)建和銷毀線程對象执赡。姚垃。
Executor:接口
ExecutorService:線程池接口
Executors:工廠類(專門負責創(chuàng)建線程池的)
    ExecutorService es = Executors.newFixedThreadPool(n);
    ExecutorService es = Executors.newCachedThreadPool();

創(chuàng)建任務(wù):實現(xiàn)Runnable接口
submit();//將任務(wù)提交給線程池侮邀,由線程池負責分配線程對象來執(zhí)行任務(wù)坏怪。。

2绊茧、File類的操作

描述文件和目錄
    文件:帶后綴的铝宵,存儲數(shù)據(jù)。靠后綴區(qū)分鹏秋。
        mp3:音頻文件尊蚁,mp4:視頻文件,jpg/png/gif...圖片文件侣夷,txt:文本文檔横朋,java文件:
    目錄:用于存儲文件和目錄的。

路徑:描述文件或文件夾位置
    絕對路徑:C:\Ruby\pro\aa\abc.txt
    相對路徑:aa
        程序來講:永遠相對于項目目錄
            File("aa\abc.txt");
            在項目目錄下:aa文件夾百拓,里面abc.txt

構(gòu)造方法:File類的對象:
File(String path);
File(String parent,String child);
File(File parent,String child);

常用方法:
    文件:
        boolean  createNewFile();//用于創(chuàng)建一個新文件
        long  length();//用于獲取一個文件的大小琴锭,字節(jié)
    目錄:文件夾
        boolean  mkdir();//用于創(chuàng)建一層文件夾
        boolean  mkdirs();//用于創(chuàng)建多層(不存在的但是必須有)
        String[] list();//獲取目錄中的子內(nèi)容(文件衙传,文件夾)决帖,只獲取一層。如果作用文件上蓖捶,返回null地回。
        File[] listFiles();//
        listFiles(FileFilter);//接口:文件過濾器:accept(File)-->boolean
    兩者皆可:
        delete();//文件或文件夾(空文件夾才可以)
        deleteOnExit();
        
        exists();//判斷file對象對應(yīng)的文件文件夾,是否存在
        isFile()-->boolean腺阳,判斷是否是文件
        isDirectory()-->boolean落君,判斷是否是目錄
        canRead()
        canWriter()
        
        getName();//文件或目錄的名稱
        getPath();//獲取文件或目錄的路徑
        getAbsolutePath();//獲取絕對路徑穿香,從根盤符開始描述
        getAbsoluteFile();//File
        getParent()-->String
        getParentFile()-->File
        
        toString()-->String亭引,重寫Object類的toString(),文件的路徑名

遞歸遍歷文件夾

3皮获、IO初識

I/O流
I:Input
O:Outout
流:Stream焙蚓,數(shù)據(jù)

IO流:流的就是數(shù)據(jù)。用于將數(shù)據(jù)從一個地方流到另一個地方洒宝。
    文件——>程序
    程序——>文件
    網(wǎng)絡(luò)——>程序
    程序——>網(wǎng)絡(luò)

流的分類:
    流向:
        輸入流:數(shù)據(jù)從外邊進入到程序中购公。。讀取數(shù)據(jù)
        輸出流:數(shù)據(jù)從程序中出去雁歌。宏浩。寫出數(shù)據(jù)
    單位:
        字節(jié)流:以字節(jié)為單位。
            
        字符流:以字符為單位靠瞎。
        
    數(shù)據(jù)的本質(zhì)都是01碼比庄。8個01碼——>byte字節(jié)。字節(jié)流是一個最根本的流乏盐。
    
    功能:
        節(jié)點流:直接接觸數(shù)據(jù)源的流
        處理流:套在流上的流佳窑。又叫過濾流。
        
        
    File父能,String神凑,Date,Thread何吝。溉委。鹃唯。
    FileInputSteram,BufferedInputStream瓣喊,BufferedOutputStream俯渤,ObjectInputStream,DataInputStream型宝,ByteArrayInputStream八匠。。趴酣。梨树。
    

    

二、本節(jié)課內(nèi)容

2.1岖寞、4大基類流

InputStream抡四,字節(jié)輸入流:抽象的
OutputStream:字節(jié)輸出流:抽象的
Reader:字符輸入流:抽象的
Writer:字符輸出流:抽象的

2.2、IO流的操作步驟

step1:確定數(shù)據(jù)從哪到哪仗谆。文件信息指巡。
step2:創(chuàng)建流:
    流向:輸入,輸出
    單位:字節(jié)隶垮,字符
    子類流:文件藻雪,內(nèi)存。狸吞。勉耀。。
step3:操作流
    讀取數(shù)據(jù):輸入
        read()
    寫出數(shù)據(jù):輸出
        write()
step4:關(guān)閉流
    close()

2.3蹋偏、FileInputStream

用于以字節(jié)為單位便斥,讀取文件中的數(shù)據(jù),到程序中威始。

1枢纠、構(gòu)造方法:
FileInputStream(String name) 
通過打開與實際文件的連接來創(chuàng)建一個 FileInputStream ,該文件由文件系統(tǒng)中的路徑名 name命名黎棠。
FileInputStream(File file) 
通過打開與實際文件的連接創(chuàng)建一個 FileInputStream 晋渺,該文件由文件系統(tǒng)中的 File對象 file命名。 
read()-->int
    每次讀取一個字節(jié)葫掉。返回值就是讀入的數(shù)據(jù)本身些举。如果讀到文件的末尾了,-1俭厚。
    
read(byte[] bs)-->int
    每次讀取多個字節(jié)户魏,最多是bs數(shù)組的長度個。返回值是本次讀取的實際的字節(jié)個數(shù)。如果到達末尾叼丑,-1.
    
int read(byte[] bs, int off, int len) 
    從該輸入流讀取最多 len字節(jié)的數(shù)據(jù)為字節(jié)數(shù)組 关翎。第一個參數(shù)表示要存儲本地讀取的數(shù)據(jù)的數(shù)組,第二個參數(shù)鸠信,表示從哪個下標開始存儲纵寝,第三個參數(shù)是表示本次讀取預(yù)計的讀取數(shù)量。該方法的返回值是本次讀取的實際數(shù)量星立。如果到達文件末尾爽茴,-1。
    
    
    
byte[] bs = new byte[3];//內(nèi)存資源

數(shù)據(jù)源:250個字節(jié)
    數(shù)組:100個長度   
    1次:100绰垂,剩150 讀取100個
    2次:100室奏,剩50  讀取100個
    3次:50,讀完了   讀取50個
    
int read(byte[] bs) -->讀多個劲装,最多數(shù)組長度胧沫,實際看返回值,數(shù)據(jù)在數(shù)組中占业,將讀取到的數(shù)據(jù)存入到數(shù)組中绒怨,默認從頭開始存儲。

在操作IO流讀取本地文件的數(shù)據(jù)谦疾,提升效率南蹂。

硬盤和內(nèi)存

read()-->每次讀取一個數(shù)據(jù),

read(byte[] bs)--> 1000

每次讀取一個字節(jié):

使用字節(jié)數(shù)組作為緩沖區(qū)餐蔬,讀取數(shù)據(jù):

2.4碎紊、FileOutputStream

構(gòu)造方法:

FileOutputStream(String name) ,在文件開頭寫佑附,擦除寫
創(chuàng)建文件輸出流以指定的名稱寫入文件樊诺。
FileOutputStream(String name, boolean append) ,在文件的末尾寫數(shù)據(jù)音同,追加
創(chuàng)建文件輸出流以指定的名稱寫入文件词爬。

FileOutputStream(File file) ,在文件開頭寫权均,擦除寫
創(chuàng)建文件輸出流以寫入由指定的 File對象表示的文件顿膨。
FileOutputStream(File file, boolean append) ,在文件的末尾寫數(shù)據(jù)叽赊,追加
創(chuàng)建文件輸出流以寫入由指定的 File對象表示的文件恋沃。 

寫出去的數(shù)據(jù),是清空寫必指。將文件中原來的數(shù)據(jù)全部擦除囊咏,從頭開始寫數(shù)據(jù)。

void write(int data),將參數(shù)梅割,這個字節(jié)數(shù)據(jù)寫出去
void write(byte[] b),將 b.length個字節(jié)從指定的字節(jié)數(shù)組寫入此文件輸出流霜第。 
void write(byte[] b, int off, int len) ,將 len字節(jié)從位于偏移量 off的指定字節(jié)數(shù)組寫入此文件輸出流。  

String--->byte[]

String--->char[]

思考題:

1户辞、向文件中寫數(shù)據(jù)的時候泌类,如果文件不存在,能寫嗎底燎?如果文件所在的文件夾不存在刃榨,能寫嗎?

? 如果文件不存在双仍,F(xiàn)ileOutputStream在寫出數(shù)據(jù)的時候喇澡,會先創(chuàng)建文件,再寫出殊校。

? 但是如果文件夾不存在晴玖,那么就報錯。(java.io.FileNotFoundException: C:\Ruby\pro\aa\bb\abc.txt (系統(tǒng)找不到指定的路徑为流。)

2呕屎、能不清空的寫,屁股后面寫敬察,不擦除原來的數(shù)據(jù)秀睛?

? FileOutputStream(path)-->開頭寫

? FileOutputStream(path , append-->true)-->末尾寫

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市莲祸,隨后出現(xiàn)的幾起案子蹂安,更是在濱河造成了極大的恐慌,老刑警劉巖锐帜,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件田盈,死亡現(xiàn)場離奇詭異,居然都是意外死亡缴阎,警方通過查閱死者的電腦和手機允瞧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛮拔,“玉大人述暂,你說我怎么就攤上這事〗牛” “怎么了畦韭?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肛跌。 經(jīng)常有香客問我艺配,道長据过,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任妒挎,我火速辦了婚禮绳锅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘酝掩。我一直安慰自己鳞芙,他們只是感情好,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布期虾。 她就那樣靜靜地躺著原朝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镶苞。 梳的紋絲不亂的頭發(fā)上喳坠,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天,我揣著相機與錄音茂蚓,去河邊找鬼壕鹉。 笑死,一個胖子當著我的面吹牛聋涨,可吹牛的內(nèi)容都是我干的晾浴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼牍白,長吁一口氣:“原來是場噩夢啊……” “哼脊凰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茂腥,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤狸涌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后最岗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帕胆,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年仑性,在試婚紗的時候發(fā)現(xiàn)自己被綠了惶楼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡诊杆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出何陆,到底是詐尸還是另有隱情晨汹,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布贷盲,位于F島的核電站淘这,受9級特大地震影響剥扣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铝穷,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一钠怯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧曙聂,春花似錦晦炊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榆苞,卻和暖如春稳衬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坐漏。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工薄疚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赊琳。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓输涕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親慨畸。 傳聞我的和親對象是個殘疾皇子莱坎,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354