




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java流一、流的分類?按數(shù)據(jù)流動(dòng)方向-輸入流:只能從中讀取字節(jié)數(shù)據(jù),而不能向其寫出數(shù)據(jù)-輸出流:只能向其寫入字節(jié)數(shù)據(jù),而不能從中讀取數(shù)據(jù)?按照流所處理的數(shù)據(jù)類型-字節(jié)流:用于處理字節(jié)數(shù)據(jù)。-字符流:用于處理Unicode字符數(shù)據(jù)。?按照流所處理的源-節(jié)點(diǎn)流:從/向一個(gè)特定的10設(shè)備讀/寫數(shù)據(jù)的流。(低級(jí)流)-處理流:對(duì)已存在的流進(jìn)行連接和圭寸裝的流。(高級(jí)流)二、緩沖流?緩沖流要“套接”在相應(yīng)的節(jié)點(diǎn)流之上,對(duì)讀寫的數(shù)據(jù)提供了緩沖的功能,提高了讀寫的效率,同時(shí)增加了一些新的方法。?J2SDK提供了四種緩存流:-BufferedReader-BufferedWriterBufferedInput
2、Streams-BufferedOutputStream?緩沖輸入流支持其父類的mark()和reset()方法:-mark()用于“標(biāo)記”當(dāng)前位置,就像加入了一個(gè)書簽,可以使用reset()方法返回這個(gè)標(biāo)記重新讀取數(shù)據(jù)。?BufferedReader提供了readLine()方法用于讀取一行字符串(以r或n分隔)。?BufferedWriter提供了newLine()用于寫入一個(gè)行分隔符。?對(duì)于輸出的緩沖流,寫出的數(shù)據(jù)會(huì)先在內(nèi)存中緩存,使用flush()方法將會(huì)使內(nèi)存中的數(shù)據(jù)立刻寫出。三、類層次3.1、InputStream類層次3.2、Outputstream類層次3.3、Reader類層
3、次Recide.r*BufferedReaderLineNumberReaderPushbackReader3.4、Writer類層次HufferedlnPutStj-eunDaialnputStreaiiHufferedOutPutStreanJDar.aQutputStreamPrintStrcarnBuffftredReaderInputStreaniR&siderIJutferedWriterCUJtputlriterPrintWritnr四、常用的字符流與字節(jié)流的轉(zhuǎn)化高級(jí)流說明:1. 字節(jié)流用于讀寫諸如圖像數(shù)據(jù)之類的原始字節(jié)流2. 字符流用于讀寫諸如文件數(shù)據(jù)之類的字符流。3低
4、級(jí)流能和外設(shè)交流。4.高級(jí)流能提高效率。5.1nputStreamReader是字節(jié)流通向字符流的橋梁。6.OutputStreamWriter是字符流通向字節(jié)流的橋梁五、代碼實(shí)例5.1、常用讀文件:/*以字節(jié)為單位讀取文件,常用于讀二進(jìn)制文件,如圖片、聲音、影像等文件。*paramfileName:文件的名*/publicstaticvoidreadFileByBytes(StringfileName)Filefile=newFile(fileName);InputStreamin=null;trylogger.debug("以字節(jié)為單位讀取文件內(nèi)容,一次讀多個(gè)字節(jié):”);/*一次
5、讀多個(gè)字節(jié)*/bytetempbytes=newbyte100;intbyteread=0;in=newFileInputStream(file);/*讀入多個(gè)字節(jié)到字節(jié)數(shù)組中,byteread為一次讀入的字節(jié)數(shù)*/while(byteread=in.read(tempbytes)!=-1)logger.debug(tempbytes);logger.debug(0);logger.debug(byteread);catch(Exceptione1)logger.error("讀取文本文件異常",e1);finallyif(in!=null)tryin.close();ca
6、tch(IOExceptione1)logger.error("讀取文本文件異?!?e1);/*以字符為單位讀取文件,常用于讀文本,數(shù)字等類型的文件*paramfileName:文件名*/publicstaticvoidreadFileByChars(StringfileName)Readerreader=null;trylogger.debug("以字符為單位讀取文件內(nèi)容,一次讀多個(gè)字節(jié):”);/*一次讀多個(gè)字符*/chartempchars=newchar100;intcharread=0;if(fileName!=null&&!""
7、.equals(fileName)reader=newInputStreamReader(newFileInputStream(fileName);/*讀入多個(gè)字符到字符數(shù)組中,charread為一次讀取字符數(shù)*/while(charread=reader.read(tempchars)!=-1)/*對(duì)于windows下,rn這兩個(gè)字符在一起時(shí),表示一個(gè)換行。*/*但如果這兩個(gè)字符分開顯示時(shí),會(huì)換兩次行。*/*因此,屏蔽掉r,或者屏蔽n。否則,將會(huì)多岀很多空行。*/if(charread=tempchars.length)&&(tempcharstempchars.length
8、-1!='r')logger.debug(tempchars);elsefor(inti=0;i<charread;i+)if(tempcharsi='r')continue;elselogger.debug(tempcharsi);catch(Exceptione1)logger.error("讀取文本文件異常",e1);finallyif(reader!=null)tryreader.close();catch(IOExceptione1)logger.error("讀取文本文件異常”,e1);*以行為單位讀取文件,常用于
9、讀面向行的格式化文件*paramfileName:文件名*/publicstaticListvString>readFileByLines(StringfileName)ListvString>list=newArrayList<String>();if(fileName!=null&&!"".equals(fileName)Filefile=newFile(fileName);BufferedReaderreader=null;trylogger.debug("以行為單位讀取文件內(nèi)容,一次讀一整行:reader=newBu
10、fferedReader(newFileReader(file);StringtempString=null;/*一次讀入一行,直到讀入null為文件結(jié)束*/while(tempString=reader.readLine()!=logger.debug(tempString);list.add(tempString);catch(lOExceptione)logger.error("讀取文本文件異?!?e);finallyif(reader!=null)tryreader.close();catch(lOExceptione1)logger.error("讀取文本文件異常
11、”,e1););null)returnlist;5.2、常用寫文件:*把內(nèi)容寫到文件*paramfilePathName文件名*paramList<String>文件內(nèi)容*/publicstaticbooleanwriterFile(StringfilePathName,Stringcontent)booleanflag=falseOutputStreamWriterosw=tryif(filePathName!=null;null&&!"".equals(filePathName)osw=newOutputStreamWriter(newFil
12、eOutputStream(filePathName);catch(FileNotFoundExceptione1)flag=false;e1.printStackTrace();if(osw!=null)BufferedWriterbw=newBufferedWriter(osw);tryif(content!=null&&!"".equals(content)bw.write(content);flag=true;catch(IOExceptione)flag=false;e.printStackTrace();finallytrybw.close();
13、osw.close();catch(IOExceptione)flag=false;e.printStackTrace();returnflag;/*把內(nèi)容寫到文件或追加到文件中*paramfilePathName*paramList<String>*/publicstaticbooleancontent)文件名文件內(nèi)容writerFileIsAppend(StringfilePathName,Stringbooleanflag=false;OutputStreamWriterosw=nulltryif(filePathName!=null&&!"&quo
14、t;.equals(filePathName)osw=newOutputStreamWriter(newFileOutputStream(filePathName,true);catch(Exceptione1)flag=false;e1.printStackTrace();if(osw!=null)BufferedWriterbw=newBufferedWriter(osw);tryif(content!=null&&!"".equals(content)bw.write(content);flag=true;catch(IOExceptione)flag
15、=false;e.printStackTrace();finallytrybw.close();osw.close();catch(IOExceptione)flag=false;e.printStackTrace();returnflag;六、RandomAccessFile6.1:說明?RandomAccessFile是一種特殊的文件流,可以用它在文件的任何地方查找或者插入數(shù)據(jù)?RandomAccessFiie同時(shí)實(shí)現(xiàn)了Datalnput和DataOutput接口,所以可以用它來讀/寫文件?構(gòu)造器:-RandomAccessFile(java.io.Filef,Stringmode)-Ra
16、ndomAccessFile(Stringfile,Stringmode)6.2:代碼示例/* Description:讀取文件最后一行內(nèi)容* paramfileName文件路徑名+文件名*/publicstaticStringgetfinalLineData(StringpathName)RandomAccessFileraf=null;StringlastLine=""tryraf=newRandomAccessFile(pathName,"r");longlen=raf.length();if(len!=0L)longpos=len-1;while(pos>0)pos-;raf.seek(pos);if(raf.readByte()='n')lastLine=raf.readLine();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 助動(dòng)車維修技術(shù)交流考核試卷
- 機(jī)器視覺與圖像處理技術(shù)考核試卷
- 智能儀器儀表項(xiàng)目規(guī)劃考核試卷
- 醫(yī)用針灸貼的種類和使用建議考核試卷
- 供應(yīng)鏈數(shù)字化轉(zhuǎn)型案例與啟示考核試卷
- 木紋設(shè)計(jì)與加工考核試卷
- 苗圃白蟻防治合同范本
- 留置權(quán)合同范本
- 業(yè)擴(kuò)報(bào)裝培訓(xùn)課件
- 8.3 摩擦力(共28張) 2024-2025學(xué)年人教版物理八年級(jí)下冊(cè)
- 生豬屠宰獸醫(yī)衛(wèi)生人員考試題庫答案(414道)
- 《完善中國特色社會(huì)主義法治體系》課件
- 2025版 高考試題分析-數(shù)學(xué)-部分4
- 湘教版三年級(jí)美術(shù)下冊(cè)教案全冊(cè)
- 重癥監(jiān)護(hù)-ICU的設(shè)置、管理與常用監(jiān)測技術(shù)
- 2024版高一上冊(cè)語文模擬試卷
- 法律顧問服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- 知道網(wǎng)課智慧樹《哲學(xué)導(dǎo)論(湖南師范大學(xué))》章節(jié)測試答案
- 防止員工集體離職合同
- 加油站合作協(xié)議書
- 福建省廈門市2023屆高三二模語文試題(解析版)
評(píng)論
0/150
提交評(píng)論