2.1累澡、線程池
????????理解為容器,裝有預(yù)先創(chuàng)建好的線程鞍匾,執(zhí)行任務(wù)交洗。執(zhí)行后歸還給線程池等待下次分配任務(wù)。為了降低程序的開銷:頻繁的創(chuàng)建和銷毀線程對(duì)象橡淑,降低程序的性能构拳。
????????目的:提高線程對(duì)象的復(fù)用性。
????????使用:
????????????//1.創(chuàng)建一個(gè)固定數(shù)量的線程池:
????????????????????ExecutorServicees=Executors.newFixedThreadPool(3);
????????????//第2種:創(chuàng)建一個(gè)線程池對(duì)象:里面有對(duì)應(yīng)的線程對(duì)象
????????????????????ExecutorServicees=Executors.newCachedThreadPool();
?
示例代碼:
????????????//step1:創(chuàng)建一個(gè)線程池對(duì)象:里面存放一些線程
? ? ? ????????????? //第1種:這種線程池中的線程的數(shù)量是固定的:由參數(shù)來指定
? ? ? ????????????????? //t1,t2,t3
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ExecutorService es = Executors.newFixedThreadPool(3);
? ? ? ????????????? //第2種:創(chuàng)建一個(gè)線程池對(duì)象:里面有對(duì)應(yīng)的線程對(duì)象
? ? ? ????????????????????????????? ExecutorServicees=Executors.newCachedThreadPool();
????????????//step2:創(chuàng)建任務(wù),Runnable接口的實(shí)現(xiàn)
? ? ? ????????????? Taskt1=newTask();
? ? ? ????????????? Taskt2=newTask();
? ? ? ? ????????????Taskt3=newTask();
? ? ? ????????????? Taskt4=newTask();
? ? ? ? ????????????Taskt5=newTask();
? ? ? ? ????//step3:提交任務(wù):將任務(wù)提交給線程池,分配線程對(duì)象執(zhí)行任務(wù)對(duì)應(yīng)的run()
? ? ? ????????????? es.submit(t1);//將t1這個(gè)任務(wù)提交給es線程池
? ? ????????????? ? es.submit(t2);//將t1這個(gè)任務(wù)提交給es線程池
? ????????????? ? ? es.submit(t3);//將t1這個(gè)任務(wù)提交給es線程池
????????????? ? ? ? es.submit(t4);//將t1這個(gè)任務(wù)提交給es線程池
? ????????????? ? ? es.submit(t5);//將t1這個(gè)任務(wù)提交給es線程池
2.2隐圾、File文件類
????????文件類File類:java.io包的。
????????File類的構(gòu)造方法:
????????????????File(Stringpathname) ;//C:\Ruby\pro\aa.jpeg
????????????????????????通過將給定的路徑名字符串轉(zhuǎn)換為抽象路徑名來創(chuàng)建新的File實(shí)例掰茶。
????????????????File(Stringparent,Stringchild) ;//parent:C:\Ruby\pro,child:aa.jpeg
????????????????????????從父路徑名字符串和子路徑名字符串創(chuàng)建新的File實(shí)例暇藏。
????????????????File(Fileparent,Stringchild)
????????????????????????從父抽象路徑名和子路徑名字符串創(chuàng)建新的File實(shí)例。
????????新建文件或文件夾
????????????1濒蒋、createNewFile()--->boolean
????????????????通過File類對(duì)象來調(diào)用盐碱,創(chuàng)建該對(duì)象所對(duì)應(yīng)的目錄文件。
????????????????如果返回true沪伙,創(chuàng)建成功瓮顽,否則就是創(chuàng)建失敗。
????????????? ? 如果文件已經(jīng)存在围橡,無法創(chuàng)建成功
? ? ????????????但是如果文件所在的文件夾都沒有暖混,無法創(chuàng)建成功
????????????2、booleanmkdir()
????????????????創(chuàng)建由此抽象路徑名命名的目錄翁授,僅創(chuàng)建一層拣播。
????????????????如果文件夾已經(jīng)存在,那么創(chuàng)建失敗
?
???????????3收擦、booleanmkdirs() ;//厲害
????????????????創(chuàng)建由此抽象路徑名命名的目錄贮配,包括任何必需但不存在的父目錄。
????????????4塞赂、booleanrenameTo(Filedest)
????????????????????重命名由此抽象路徑名表示的文件
????????????????????可以重命名泪勒,還可以剪切
???刪除文件或文件夾
????????1、booleandelete()
????????????刪除由此抽象路徑名表示的文件或目錄宴猾。
? ????????????? 如果文件不存在圆存,刪除失敗
? ? ????????????還可以刪除文件夾:但是只能刪除空文件夾,(如果文件夾中有內(nèi)容仇哆,不會(huì)直接刪除的辽剧,是一種保護(hù)機(jī)制)
????????2、voiddeleteOnExit()
????????????????請(qǐng)求在虛擬機(jī)終止時(shí)刪除由此抽象路徑名表示的文件或目錄
????????????????程序要退出了:刪除程序執(zhí)行過程中税产,產(chǎn)生的日志文件怕轿,緩沖文件。辟拷。撞羽。
?常用方法:
????????1、exists();//判斷File類的對(duì)象所表示文件或文件夾衫冻,是否存在
????????2诀紊、booleanisFile()
????????????????測(cè)試此抽象路徑名表示的文件是否為普通文件
????????3、booleanisDirectory()
????????????????測(cè)試此抽象路徑名表示的文件是否為目錄隅俘。
????????4邻奠、booleanisAbsolute()
????????????????測(cè)試這個(gè)抽象路徑名是否是絕對(duì)的笤喳。
????????5、StringgetName()
????????????????返回由此抽象路徑名表示的文件或目錄的名稱碌宴。
????????6杀狡、StringgetPath()
????????????????將此抽象路徑名轉(zhuǎn)換為路徑名字符串。
????????7贰镣、StringgetAbsolutePath()
????????????????返回此抽象路徑名的絕對(duì)路徑名字符串呜象。
????????8、FilegetAbsoluteFile()
????????????????返回此抽象路徑名的絕對(duì)形式碑隆。
????????9恭陡、StringgetParent()
????????????????返回此抽象路徑名的父null的路徑名字符串,如果此路徑名未命名為父目錄上煤,則返回null休玩。
????????10、FilegetParentFile()
????????????????返回此抽象路徑名的父劫狠,或抽象路徑名null如果此路徑名沒有指定父目錄哥捕。
????????11、longlength()
????????????????返回由此抽象路徑名表示的文件的長(zhǎng)度嘉熊。以字節(jié)為單位遥赚。
????????????????????????bit:位,0,1
????????????????????????byte:字節(jié)阐肤,8個(gè)bit凫佛。
????????????????????????kb:1024個(gè)字節(jié)
????????????????????????mb:
????????12、longlastModified()
????????????????返回此抽象路徑名表示的文件上次修改的時(shí)間孕惜。
重要的問題:
????????Filef1=newFile("C:\\Ruby\\pro\\aa.jpg");//創(chuàng)建一個(gè)File類的對(duì)象愧薛,但是該文件對(duì)象所對(duì)應(yīng)的目錄文件,不一定存在衫画。
遍歷文件夾:只針對(duì)目錄來講毫炉,不能對(duì)文件操作,否則返回null削罩。
????????1瞄勾、String[]list()
????????????????????返回一個(gè)字符串?dāng)?shù)組,命名由此抽象路徑名表示的目錄中的文件和目錄弥激。
????????2进陡、File[]listFiles()
????????????????????返回一個(gè)抽象路徑名數(shù)組,表示由該抽象路徑名表示的目錄中的文件微服。
????????3趾疚、File[]listFiles(FileFilterfilter)
????????????????????返回一個(gè)抽象路徑名數(shù)組,表示由此抽象路徑名表示的滿足指定過濾器的目錄中的文件和目錄。
????????????????????自已定義過濾的規(guī)則糙麦,實(shí)現(xiàn)FileFilter接口即可辛孵。
????????????????????接口中:publicbooleanaccept(Filepathname)-->boolean,
? ? ????????????????????原理:將目錄下的所有的子文件和文件夾赡磅,都作為accept()方法的參數(shù)魄缚,一個(gè)一個(gè)的判斷,如果返回true仆邓,就是我們要的。返回false伴鳖,就是不要的节值。
?
2.3、IO流
????????I/O流
????????????????????I:input榜聂,輸入
????????????????????O:output搞疗,輸出
????? ? 流向來分:
? ? ????????????? ? 輸入流:數(shù)據(jù)從外部進(jìn)入到程序中。须肆。
? ????????????? ? ? 輸出流:數(shù)據(jù)從程序中出去匿乃。。豌汇。
????? ? 單位來分:
? ????????? ????? ? 字節(jié)流:以字節(jié)為單位幢炸。? ? 核心:所有類型的文件
? ? ????????????? ? 字符流:以字符為單位【芗——>文本信息
????? ? 功能來分:
? ????????????????? 節(jié)點(diǎn)流:直接結(jié)束數(shù)據(jù)源的流宛徊。
????????????????? ? 處理流:又叫過濾流。套在流上的流逻澳。
IO流的4大基類
????????InputStream字節(jié)輸入流
????????OutputStream字節(jié)輸出流
????????Reader字符輸入流
????????Writer字符輸出流
文件流:
????????FileInputStream:文件字節(jié)輸入流
????????構(gòu)造方法:
????????????FileInputStream(Filefile)
????????????????通過打開與實(shí)際文件的連接創(chuàng)建一個(gè)FileInputStream闸天,該文件由文件系統(tǒng)中的File對(duì)象file命名。
????????????FileInputStream(Stringname)
????????????????通過打開與實(shí)際文件的連接來創(chuàng)建一個(gè)FileInputStream斜做,該文件由文件系統(tǒng)中的路徑名name命名苞氮。
讀取數(shù)據(jù):
????????intread()
????????????從該輸入流讀取一個(gè)字節(jié)的數(shù)據(jù)。
????????????每次讀取一個(gè)字節(jié)的數(shù)據(jù)瓤逼,返回值就是讀到的數(shù)據(jù)本身(int)笼吟,如果到達(dá)末尾,返回值就是-1霸旗。
IO的操作步驟流程:
????????step1:分析需求赞厕,明確數(shù)據(jù)從哪到哪。文件信息
? ? ? ????????? 數(shù)據(jù)的流向:輸入定硝,輸出
? ? ? ????????? 單位:字節(jié)皿桑,字符
? ? ? ? ????????子類流:
????????step2:創(chuàng)建流的對(duì)象:流向,單位,哪個(gè)具體的流
????????step3:操作流
????????? ????? 讀然逦辍:
? ? ? ????????????? 輸入——>read()
? ????????????? 寫出:
? ? ? ????????????? 輸出——>write()
????????step4:關(guān)閉流
? ? ????????????釋放資源:close()