1、線程池
????????理解為一個(gè)容器的榛,裝有預(yù)先創(chuàng)建好的線程對象琼了,執(zhí)行任務(wù)。執(zhí)行后歸還給線程池等待下次的任務(wù)夫晌。降低了程序的開銷:頻繁的創(chuàng)建和銷毀線程對象雕薪。。
????Executor:接口
????ExecutorService:線程池接口
????Executors:工廠類(專門負(fù)責(zé)創(chuàng)建線程池的)
? ? ????????ExecutorService es = Executors.newFixedThreadPool(n);
? ? ????????ExecutorService es = Executors.newCachedThreadPool();
?
????????創(chuàng)建任務(wù):實(shí)現(xiàn)Runnable接口
????????????submit();//將任務(wù)提交給線程池晓淀,由線程池負(fù)責(zé)分配線程對象來執(zhí)行任務(wù)所袁。。
2要糊、File類的操作
????描述文件和目錄
? ? ????????文件:帶后綴的纲熏,存儲數(shù)據(jù)妆丘。靠后綴區(qū)分局劲。
? ? ? ????????? mp3:音頻文件勺拣,mp4:視頻文件,jpg/png/gif...圖片文件鱼填,txt:文本文檔药有,java文件:
? ? ????????目錄:用于存儲文件和目錄的。
?
????路徑:描述文件或文件夾位置
????? ? 絕對路徑:C:\Ruby\pro\aa\abc.txt
? ????? 相對路徑:aa
? ? ? ? 程序來講:永遠(yuǎn)相對于項(xiàng)目目錄
? ? ? ? ? ? File("aa\abc.txt");
? ? ? ? ? ? 在項(xiàng)目目錄下:aa文件夾苹丸,里面abc.txt
?
構(gòu)造方法:File類的對象:
????????File(String path);
????????File(String parent,String child);
????????File(File parent,String child);
?
常用方法:
? ? 文件:
? ? ? ????? boolean? createNewFile();//用于創(chuàng)建一個(gè)新文件
? ? ? ????? long? length();//用于獲取一個(gè)文件的大小愤惰,字節(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ù)從一個(gè)地方流到另一個(gè)地方。
? ????????? 文件——>程序
????????? ? 程序——>文件
? ????????? 網(wǎng)絡(luò)——>程序
?????????? 程序——>網(wǎng)絡(luò)
?
流的分類:
? ? 流向:
? ? ? ? 輸入流:數(shù)據(jù)從外邊進(jìn)入到程序中蚓土。宏侍。讀取數(shù)據(jù)
? ? ? ? 輸出流:數(shù)據(jù)從程序中出去。蜀漆。寫出數(shù)據(jù)
? ? 單位:
? ? ? ? 字節(jié)流:以字節(jié)為單位谅河。
? ? ? ? 字符流:以字符為單位。
? ? 數(shù)據(jù)的本質(zhì)都是01碼确丢。8個(gè)01碼——>byte字節(jié)绷耍。字節(jié)流是一個(gè)最根本的流。
? ? 功能:
? ? ? ? 節(jié)點(diǎn)流:直接接觸數(shù)據(jù)源的流
? ? ? ? 處理流:套在流上的流鲜侥。又叫過濾流褂始。
? ? File,String描函,Date崎苗,Thread狐粱。。胆数。
? ? FileInputSteram肌蜻,BufferedInputStream,BufferedOutputStream必尼,ObjectInputStream蒋搜,DataInputStream,ByteArrayInputStream判莉。豆挽。。券盅。
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(Stringname)
????????????????????????通過打開與實(shí)際文件的連接來創(chuàng)建一個(gè)FileInputStream锻狗,該文件由文件系統(tǒng)中的路徑名name命名。
????????????????FileInputStream(Filefile)
????????????????????????通過打開與實(shí)際文件的連接創(chuàng)建一個(gè)FileInputStream焕参,該文件由文件系統(tǒng)中的File對象file命名轻纪。
????????????????read()-->int
? ????????????????? ????每次讀取一個(gè)字節(jié)。返回值就是讀入的數(shù)據(jù)本身叠纷。如果讀到文件的末尾了刻帚,-1。
????????????????read(byte[] bs)-->int
? ????????????????????? 每次讀取多個(gè)字節(jié)涩嚣,最多是bs數(shù)組的長度個(gè)崇众。返回值是本次讀取的實(shí)際的字節(jié)個(gè)數(shù)掂僵。如果到達(dá)末尾,-1.
????????????????int read(byte[] bs, int off, int len)
? ????????????????????? 從該輸入流讀取最多 len字節(jié)的數(shù)據(jù)為字節(jié)數(shù)組 顷歌。第一個(gè)參數(shù)表示要存儲本地讀取的數(shù)據(jù)的數(shù)組看峻,第二個(gè)參數(shù),表示從哪個(gè)下標(biāo)開始存儲衙吩,第三個(gè)參數(shù)是表示本次讀取預(yù)計(jì)的讀取數(shù)量互妓。該方法的返回值是本次讀取的實(shí)際數(shù)量。如果到達(dá)文件末尾坤塞,-1冯勉。
????????????????byte[] bs = new byte[3];//內(nèi)存資源
int read(byte[] bs) -->讀多個(gè),最多數(shù)組長度摹芙,實(shí)際看返回值灼狰,數(shù)據(jù)在數(shù)組中,將讀取到的數(shù)據(jù)存入到數(shù)組中浮禾,默認(rèn)從頭開始存儲交胚。
????????在操作IO流讀取本地文件的數(shù)據(jù),提升效率盈电。
????????????硬盤和內(nèi)存
????????????????????read()-->每次讀取一個(gè)數(shù)據(jù)蝴簇,
????????????????????read(byte[] bs)--> 1000
每次讀取一個(gè)字節(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ù)舶担。
????????????voidwrite(intdata)坡疼,將參數(shù),這個(gè)字節(jié)數(shù)據(jù)寫出去
????????????voidwrite(byte[]b),將b.length個(gè)字節(jié)從指定的字節(jié)數(shù)組寫入此文件輸出流衣陶。
????????????voidwrite(byte[]b,intoff,intlen) ,將len字節(jié)從位于偏移量off的指定字節(jié)數(shù)組寫入此文件輸出流柄瑰。
????????????String--->byte[]
????????????String--->char[]