下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
JAVA應(yīng)用開發(fā)詳解第12章:JAVAIO ——字節(jié)流與字符流MLDN軟件教學(xué)研發(fā)部本章目標(biāo)掌握流的概念掌握字節(jié)流與字符流的作用掌握文件的標(biāo)準(zhǔn)操作步驟掌握字節(jié)與字符操作的區(qū)別流在程序中所有的數(shù)據(jù)都是以流的方式進(jìn)行傳輸或保存的,程序需要數(shù)據(jù)的時(shí)候要使用輸入流讀取數(shù)據(jù),而當(dāng)程序需要將一些數(shù)據(jù)保存起來的時(shí)候,就要使用輸出流完成。字節(jié)流與字符流在java.io包中操作文件內(nèi)容的主要有兩大類:字節(jié)流、字符流,兩類都分為輸入和輸出操作。在字節(jié)流中輸出數(shù)據(jù)主要是使用OutputStream完成,輸入使的是InputStream,在字符流中輸出主要是使用Writer類完成,輸入主要是使用Reader類完成。操作流程在JAVA中IO操作也是有相應(yīng)步驟的,以文件操作為例,主要的操作流程如下:使用File類打開一個(gè)文件通過字節(jié)流或字符流的子類,指定輸出的位置進(jìn)行讀/寫操作關(guān)閉輸入/輸出字節(jié)流字節(jié)流主要是操作byte類型數(shù)據(jù),以byte數(shù)組為準(zhǔn),主要操作類就是OutputStream、InputStream。字節(jié)輸出流:OutputStream字節(jié)輸入流:InputStreamOutputStream類OutputStream是整個(gè)io包中字節(jié)輸出流的最大父類,此類的定義如下:publicabstractclassOutputStreamextendsObjectimplementsCloseable,Flushable從以上的定義中可以發(fā)現(xiàn),此類是一個(gè)抽象類,如果要想使用此類的話,則首先必須通過子類實(shí)例化對象,那么如果現(xiàn)在要操作的是一個(gè)文件,則可以使用:FileOutputStream類。通過向上轉(zhuǎn)型之后,可以為OutputStream實(shí)例化。OutputStream類的常用方法要想使用以上方法,必須使用子類實(shí)例化,此時(shí)使用FileOutputStream子類,此類的構(gòu)造方法如下:publicFileOutputStream(Filefile)throwsFileNotFoundExceptionNo.方法或常量類型描述1publicvoidclose()throwsIOException普通關(guān)閉輸出流2publicvoidflush()throwsIOException普通刷新緩沖區(qū)3publicvoidwrite(byte[]b)throwsIOException普通將一個(gè)byte數(shù)組寫入數(shù)據(jù)流4publicvoidwrite(byte[]b,intoff,intlen)throwsIOException普通將一個(gè)指定范圍的byte數(shù)組寫入數(shù)據(jù)流5publicabstractvoidwrite(intb)throwsIOException普通將一個(gè)字節(jié)數(shù)據(jù)寫入數(shù)據(jù)流向文件中寫入字符串packageorg.lxh.demo12.byteiodemo;importjava.io.File;importjava.io.FileOutputStream;importjava.io.OutputStream;public
classOutputStreamDemo01{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
OutputStreamout=null; //準(zhǔn)備好一個(gè)輸出的對象
out=newFileOutputStream(f); //通過對象多態(tài)性,進(jìn)行實(shí)例化
//第3步:進(jìn)行寫操作
Stringstr="HelloWorld!!!"; //準(zhǔn)備一個(gè)字符串
byteb[]=str.getBytes();//只能輸出byte數(shù)組,所以將字符串變?yōu)閎yte數(shù)組
out.write(b); //將內(nèi)容輸出,保存文件
//第4步:關(guān)閉輸出流
out.close(); //關(guān)閉輸出流
}}使用write(intt)的方式寫入文件內(nèi)容packageorg.lxh.demo12.byteiodemo;importjava.io.File;importjava.io.FileOutputStream;importjava.io.OutputStream;public
classOutputStreamDemo02{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
OutputStreamout=null; //準(zhǔn)備好一個(gè)輸出的對象
out=newFileOutputStream(f); //通過對象多態(tài)性,進(jìn)行實(shí)例化
//第3步:進(jìn)行寫操作
Stringstr="HelloWorld!!!"; //準(zhǔn)備一個(gè)字符串
byteb[]=str.getBytes();//只能輸出byte數(shù)組,所以將字符串變?yōu)閎yte數(shù)組
for(inti=0;i<b.length;i++){ out.write(b[i]); //將內(nèi)容輸出
}
//第4步:關(guān)閉輸出流
out.close(); //關(guān)閉輸出流
}}追加新內(nèi)容之前的所有操作中,如果重新執(zhí)行程序,則肯定會覆蓋文件中的已有內(nèi)容,那么此時(shí)可以通過FielOutputStream向文件中追加內(nèi)容,F(xiàn)ileOutputStream的另外一個(gè)構(gòu)造方法:publicFileOutputStream(Filefile,booleanappend)throwsFileNotFoundException在構(gòu)造方法中,如果將append的值設(shè)置為true,則表示在文件的末尾追加內(nèi)容。修改之前的程序,追加文件內(nèi)容packageorg.lxh.demo12.byteiodemo;importjava.io.File;importjava.io.FileOutputStream;importjava.io.OutputStream;public
classOutputStreamDemo03{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
OutputStreamout=null; //準(zhǔn)備好一個(gè)輸出的對象
out=newFileOutputStream(f,true);//此處表示在文件末尾追加內(nèi)容
//第3步:進(jìn)行寫操作
Stringstr="HelloWorld!!!"; //準(zhǔn)備一個(gè)字符串
byteb[]=str.getBytes();//只能輸出byte數(shù)組,所以將字符串變?yōu)閎yte數(shù)組
for(inti=0;i<b.length;i++){ out.write(b[i]); //將內(nèi)容輸出
}
//第4步:關(guān)閉輸出流
out.close(); //關(guān)閉輸出流
}}字節(jié)輸入流:InputStream既然程序可以向文件中寫入內(nèi)容,則就可以通過InputStream從文件中把內(nèi)容讀取進(jìn)來,首先來看InputStream類的定義:publicabstractclassInputStreamextendsObjectimplementsCloseable與OutputStream類一樣,InputStream本身也是一個(gè)抽象類,必須依靠其子類,如果現(xiàn)在是從文件中讀取,子類肯定是FileInputStream。觀察FileInputStream類的構(gòu)造方法:publicFileInputStream(Filefile)throwsFileNotFoundExceptionInputStream類的常用方法No.方法或常量類型描述1publicintavailable()throwsIOException普通可以取得輸入文件的大小2publicvoidclose()throwsIOException普通關(guān)閉輸入流3publicabstractintread()throwsIOException普通讀取內(nèi)容,以數(shù)字的方式讀取4publicintread(byte[]b)throwsIOException普通將內(nèi)容讀到byte數(shù)組之中,同時(shí)返回讀入的個(gè)數(shù)從文件中讀取內(nèi)容packageorg.lxh.demo12.byteiodemo;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;public
classInputStramDemo01{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
InputStreaminput=null; //準(zhǔn)備好一個(gè)輸入的對象
input=newFileInputStream(f); //通過對象多態(tài)性,進(jìn)行實(shí)例化
//第3步:進(jìn)行讀操作
byteb[]=new
byte[1024]; //所有的內(nèi)容讀到此數(shù)組之中
input.read(b); //把內(nèi)容取出,內(nèi)容讀到byte數(shù)組之中
//第4步:關(guān)閉輸入流
input.close(); //關(guān)閉輸入流
System.out.println("內(nèi)容為:"+newString(b));//把byte數(shù)組變?yōu)樽址敵?/p>
}}輸出數(shù)組中指定位置的內(nèi)容packageorg.lxh.demo12.byteiodemo;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;public
classInputStreamDemo02{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
InputStreaminput=null; //準(zhǔn)備好一個(gè)輸入的對象
input=newFileInputStream(f); //通過對象多態(tài)性,進(jìn)行實(shí)例化
//第3步:進(jìn)行讀操作
byteb[]=new
byte[1024]; //所有的內(nèi)容讀到此數(shù)組之中
intlen=input.read(b); //將內(nèi)容讀出
//第4步:關(guān)閉輸入流
input.close(); //關(guān)閉輸入流
System.out.println("讀入數(shù)據(jù)的長度:"+len); System.out.println("內(nèi)容為:"+newString(b,0,len));//把byte數(shù)組變?yōu)樽址敵?/p>
}}開辟指定大小的byte數(shù)組packageorg.lxh.demo12.byteiodemo;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;public
classInputStreamDemo03{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
InputStreaminput=null; //準(zhǔn)備好一個(gè)輸入的對象
input=newFileInputStream(f); //通過對象多態(tài)性,進(jìn)行實(shí)例化
//第3步:進(jìn)行讀操作
byteb[]=new
byte[(int)f.length()]; //所有的內(nèi)容讀到此數(shù)組之中,數(shù)組大小由文件決定
input.read(b); //將內(nèi)容讀出
//第4步:關(guān)閉輸入流
input.close(); //關(guān)閉輸入流
System.out.println("內(nèi)容為:"+newString(b));//把byte數(shù)組變?yōu)樽址敵?/p>
}}使用read()通過循環(huán)讀取packageorg.lxh.demo12.byteiodemo;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;public
classInputStreamDemo04{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
InputStreaminput=null; //準(zhǔn)備好一個(gè)輸入的對象
input=newFileInputStream(f); //通過對象多態(tài)性,進(jìn)行實(shí)例化
//第3步:進(jìn)行讀操作
byteb[]=new
byte[(int)f.length()]; //所有的內(nèi)容讀到此數(shù)組之中
for(inti=0;i<b.length;i++){ b[i]=(byte)input.read(); //將內(nèi)容讀出
}
//第4步:關(guān)閉輸入流
input.close(); //關(guān)閉輸入流
System.out.println("內(nèi)容為:"+newString(b));//把byte數(shù)組變?yōu)樽址敵?/p>
}}另一種方式的讀取packageorg.lxh.demo12.byteiodemo;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;public
classInputStreamDemo05{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
InputStreaminput=null; //準(zhǔn)備好一個(gè)輸入的對象
input=newFileInputStream(f); //通過對象多態(tài)性,進(jìn)行實(shí)例化
//第3步:進(jìn)行讀操作
intlen=0; //用于記錄讀取的數(shù)據(jù)個(gè)數(shù)
byteb[]=new
byte[1024]; //所有的內(nèi)容讀到此數(shù)組之中
inttemp=0; //接收讀取的每一個(gè)內(nèi)容
while((temp=input.read())!=-1){
//將每次的讀取內(nèi)容給temp變量,如果temp的值不是-1,則表示文件沒有讀完
b[len]=(byte)temp; len++; }
//第4步:關(guān)閉輸入流
input.close(); //關(guān)閉輸入流
System.out.println("內(nèi)容為:"+newString(b,0,len)); }}字符流在程序中一個(gè)字符等于2個(gè)字節(jié),那么JAVA提供了Reader、Writer兩個(gè)專門操作字符流的類。字符輸出流:Writer字符輸入流:Reader字符輸出流:WriterWriter本身是一個(gè)字符流的輸出類,此類的定義如下:publicabstractclassWriterextendsObjectimplementsAppendable,Closeable,Flushable此類本身也是一個(gè)抽象類,如果要想使用此類,則肯定要使用其子類,此時(shí)如果是向文件中寫入內(nèi)容,所以應(yīng)該使用FileWriter的子類。FileWriter類的構(gòu)造方法定義如下:publicFileWriter(Filefile)throwsIOExceptionWriter類的常用方法No.方法或常量類型描述1publicabstractvoidclose()throwsIOException普通關(guān)閉輸出流2publicvoidwrite(Stringstr)throwsIOException普通將字符串輸出3publicvoidwrite(char[]cbuf)throwsIOException普通將字符數(shù)組輸出4publicabstractvoidflush()throwsIOException普通強(qiáng)制性清空緩存向文件中寫入數(shù)據(jù)packageorg.lxh.demo12.chariodemo;importjava.io.File;importjava.io.FileWriter;importjava.io.Writer;public
classWriterDemo01{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
Writerout=null; //準(zhǔn)備好一個(gè)輸出的對象
out=newFileWriter(f); //通過對象多態(tài)性,進(jìn)行實(shí)例化
//第3步:進(jìn)行寫操作
Stringstr="HelloWorld!!!"; //準(zhǔn)備一個(gè)字符串
out.write(str); //將內(nèi)容輸出
//第4步:關(guān)閉輸出流
out.close(); //關(guān)閉輸出流
}}使用FileWriter追加文件的內(nèi)容在使用字符流操作的時(shí)候,也可以實(shí)現(xiàn)文件的追加功能,直接使用FileWriter類中的以下構(gòu)造即可實(shí)現(xiàn)追加:publicFileWriter(Filefile,booleanappend)throwsIOException將append的值設(shè)置成true,就表示追加。追加文件內(nèi)容packageorg.lxh.demo12.chariodemo;importjava.io.File;importjava.io.FileWriter;importjava.io.Writer;public
classWriterDemo02{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
Writerout=null; //準(zhǔn)備好一個(gè)輸出的對象
out=newFileWriter(f,true); //通過對象多態(tài)性,進(jìn)行實(shí)例化
//第3步:進(jìn)行寫操作
Stringstr="\r\nLIXINGHUA\r\nHelloWorld!!!"; //準(zhǔn)備一個(gè)字符串
out.write(str);//將內(nèi)容輸出
//第4步:關(guān)閉輸出流
out.close(); //關(guān)閉輸出流
}}字符輸入流:ReaderReader是使用字符的方式從文件之中取出數(shù)據(jù),Reader類的定義如下:publicabstractclassReaderextendsObjectimplementsReadable,CloseableReader本身也是抽象類,如果現(xiàn)在要從文件中讀取內(nèi)容,則可以直接使用FileReader子類。FileReader的構(gòu)造方法定義如下:publicFileReader(Filefile)throwsFileNotFoundExceptionReader類的常用方法No.方法或常量類型描述1publicabstractvoidclose()throwsIOException普通關(guān)閉輸出流2publicintread()throwsIOException普通讀取單個(gè)字符3publicintread(char[]cbuf)throwsIOException普通將內(nèi)容讀到字符數(shù)組之中,返回讀入的長度從文件中讀取內(nèi)容packageorg.lxh.demo12.chariodemo;importjava.io.File;importjava.io.FileReader;importjava.io.Reader;public
classReaderDemo01{
public
static
voidmain(String[]args)throwsException{//異常拋出,不處理
//第1步、使用File類找到一個(gè)文件
Filef=newFile("d:"+File.separator+"test.txt");//聲明File對象
//第2步:通過子類實(shí)例化父類對象
Readerreader=null; //準(zhǔn)備好一個(gè)輸入的對象
reader=newFileReader(f); //通過對象多態(tài)性,進(jìn)行實(shí)例化
//第3步:進(jìn)行讀操作
charc[]=new
char[1024]; //所有的內(nèi)容讀到此數(shù)組之中
intlen=reader.read(c); //將內(nèi)容輸出
//第4步:關(guān)閉輸入流
reader.close(); //關(guān)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年南京銀行南通分行國際業(yè)務(wù)階段性社會招聘備考題庫含答案詳解
- 2025廣東省佛山市順德一中西南學(xué)校招聘廚師、廚工模擬筆試試題及答案解析
- 2025寧夏黃河農(nóng)村商業(yè)銀行科技人員社會招聘備考筆試試題及答案解析
- 2025下半年四川樂山井研縣中醫(yī)醫(yī)院醫(yī)共體招聘編外護(hù)理人員10人備考筆試試題及答案解析
- 2025四川省公共衛(wèi)生綜合臨床中心(四川大學(xué)華西醫(yī)院錦城醫(yī)院)黨政綜合辦公室宣傳干事招聘1人備考考試題庫及答案解析
- 2025重慶市萬州區(qū)分水鎮(zhèn)人民政府招聘非全日制公益性崗位1人備考筆試試題及答案解析
- 2025成都農(nóng)商銀行軟件開發(fā)崗(應(yīng)用架構(gòu)方向)社會招聘參考筆試題庫及答案解析
- 2025年甘肅省武威市涼州區(qū)高壩鎮(zhèn)人民政府招聘專業(yè)化管理大學(xué)生村文書(補(bǔ)充)備考考試試題及答案解析
- 2025廣西北海市銀海區(qū)財(cái)政局招聘編外用工人員1人參考考試題庫及答案解析
- 2025青海黃南州同仁市司法局面向全市招錄1人備考筆試試題及答案解析
- SCADA監(jiān)控系統(tǒng)運(yùn)維合同
- 2025年1月國家開放大學(xué)法律事務(wù)??啤缎淌略V訟法學(xué)》期末考試試題及答案
- 作戰(zhàn)標(biāo)圖基本知識
- 交響音樂賞析知到智慧樹章節(jié)測試課后答案2024年秋西安交通大學(xué)
- 骨科糖尿病病人的護(hù)理
- 滑雪場安全事故應(yīng)急預(yù)案
- 港區(qū)船塢工程施工組織設(shè)計(jì)
- JTS-155-1-2019碼頭岸電設(shè)施檢測技術(shù)規(guī)范
- MOOC 英語影視欣賞-蘇州大學(xué) 中國大學(xué)慕課答案
- 護(hù)理人員配置原則與標(biāo)準(zhǔn)
- 阿爾及利亞醫(yī)療器械法規(guī)要求綜述
評論
0/150
提交評論