




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
§8-2學(xué)生信息的輸入輸出Java面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)目標(biāo)任務(wù)分析將學(xué)生信息管理系統(tǒng)中的學(xué)生對(duì)象信息存入文件中,以實(shí)現(xiàn)數(shù)據(jù)的持久性??赏ㄟ^Java.io中提供的相關(guān)類及方法完成。教學(xué)內(nèi)容1Java數(shù)據(jù)流的概念字節(jié)流操作23字符流操作Java數(shù)據(jù)流的概念
在Java程序設(shè)計(jì)語言中,一個(gè)可以讀取字節(jié)序列的對(duì)象被稱為輸入流(inputstream),一個(gè)可以寫入字節(jié)序列的對(duì)象被稱為輸出流(outputstream)。
在進(jìn)行數(shù)據(jù)讀寫時(shí),如果以字節(jié)為單位,則稱為字節(jié)流。其處理單位為1個(gè)字節(jié)(byte,1byte=8bits)。字節(jié)流的操作
Java中提供了兩個(gè)抽象類InputStream和OutputStream,它們是字節(jié)流的頂級(jí)父類。所有的字節(jié)輸入流都繼承自InputStream,所有的字節(jié)輸出流都繼承自O(shè)utputStream。字節(jié)流的操作抽象類InputStream常用方法方法聲明方法功能intread()從輸入流讀取一個(gè)字節(jié)的數(shù)據(jù)。返回-1,表示數(shù)據(jù)讀取結(jié)束。intread(byte[]b)從輸入流讀取最多b.length個(gè)字節(jié)的數(shù)據(jù),并保存到指定數(shù)組中,返回的整數(shù)表示讀取字節(jié)的數(shù)目。返回-1,表示數(shù)據(jù)讀取結(jié)束。intread(byte[]b,intstart,intsize)從輸入流讀取最多size字節(jié)的數(shù)據(jù),并保存到指定數(shù)組中,start指定保存的起始位置,返回的整數(shù)表示讀取字節(jié)的數(shù)目。返回-1,表示數(shù)據(jù)讀取結(jié)束。Voidclose()關(guān)閉此文件輸入流并釋放與流相關(guān)聯(lián)的任何系統(tǒng)資源。字節(jié)流的操作staticpublicvoidreadFile()throwsIOException{ InputStreaminput=null; try{
//創(chuàng)建一個(gè)FileInputStream對(duì)象 input=newFileInputStream("D:\\test\\text1.txt"); intn;
//調(diào)用read()方法,每次讀取一個(gè)字節(jié),直到返回-1 while((n=input.read())!=-1){
//將讀取的字節(jié)轉(zhuǎn)換為字符輸出 System.out.println((char)n); } }finally{ if(input!=null){
/關(guān)閉文件釋放底層資源 input.close(); } }}一個(gè)字節(jié)一個(gè)字節(jié)的讀取文件內(nèi)容執(zhí)行結(jié)果字節(jié)流的操作staticpublicvoidreadMFile()throwsIOException{ InputStreaminput=null; try{
//創(chuàng)建一個(gè)FileInputStream對(duì)象 input=newFileInputStream("D:\\test\\text1.txt");
//定義字節(jié)數(shù)組 byte[]buffer=newbyte[100];
intcount=0;//讀取到的字節(jié)數(shù)
intn=0;//每次讀取的字節(jié)數(shù)
//調(diào)用read(byte[]b)方法,每次讀取多個(gè)字節(jié),直到返回-1 while((n=input.read(buffer))!=-1){
//將字節(jié)數(shù)組內(nèi)容轉(zhuǎn)換為字符串輸出 System.out.println(newString(buffer)); count=count+n; } System.out.println("\nread"+count+"bytes."); }finally{ if(input!=null){
input.close();//關(guān)閉流釋放底層資源 } } }一次讀取多個(gè)字節(jié)內(nèi)容執(zhí)行結(jié)果字節(jié)流的操作抽象類OutputStream常用方法方法聲明方法功能voidwrite()向輸出流寫入一個(gè)字節(jié)的數(shù)據(jù)。voidwrite(byte[]b)將數(shù)組中的所有數(shù)據(jù)寫入輸出流。voidwrite(byte[]b,intstart,intsize)將數(shù)組中start開始的size個(gè)字節(jié)的數(shù)據(jù)寫入輸出流voidflush()刷新輸出流,并強(qiáng)制寫出所有緩沖的輸出字節(jié)voidclose()關(guān)閉此輸出流并釋放與流相關(guān)聯(lián)的任何系統(tǒng)資源。字節(jié)流的操作staticpublicvoidwriteFile()throwsIOException{ OutputStreamoutput=null; try{ output=newFileOutputStream("D:\\stu\\poem.txt");
Stringstr="大江東去,\n浪淘盡,\n千古風(fēng)流人物。";
byte[]buff=str.getBytes();//將字符串轉(zhuǎn)換為字節(jié)數(shù)組
output.write(buff);//寫入
System.out.println("寫入成功"); }finally{ if(output!=null){
//關(guān)閉流釋放底層資源 output.close(); } } } publicstaticvoidmain(String[]args)throwsIOException{ writeFile(); }創(chuàng)建一個(gè)用于寫數(shù)據(jù)到D:\test\text1.txt文件的輸出流對(duì)象字符流的操作
Java中提供了兩個(gè)抽象類Writer和Reader,它們是字符流的頂級(jí)父類。所有的字符輸入流都繼承自Reader,所有的字符輸出流都繼承自Writer。讀寫中文文件常使用字符流。字符流的操作Reader類層次結(jié)構(gòu)
Reader是以char為單位讀取文件的一個(gè)輸入流(字符流)接口,其中最基本的一個(gè)實(shí)現(xiàn)類是FileReader,可以將文件內(nèi)容以字符為單位輸入到內(nèi)存中。字符輸入流字符流的操作
使用FileReader從指定文件讀取字符數(shù)據(jù),首先需要使用其構(gòu)造方法創(chuàng)建字符輸入流對(duì)象,然后將指定文件內(nèi)容以字符為單位輸入到內(nèi)存,主要使用以下基本操作。1)創(chuàng)建輸入流對(duì)象:FileReader(String
fileName)如:FileReaderin=newFileReader("D:\test\text1.txt");創(chuàng)建一個(gè)從D:\test\text1.txt文件中讀取字符數(shù)據(jù)的輸入流對(duì)象。2)讀文件,與字節(jié)流相似也有有三種讀數(shù)據(jù)的方法。intread()//讀一個(gè)字符,返回-1時(shí),數(shù)據(jù)讀取結(jié)束int
read(char[]
cbuf)//將字符讀入數(shù)組,返回值為讀取的字符數(shù),如果已經(jīng)達(dá)到流的結(jié)尾,則為-1intread(char[]c,intoffset,intlen)//將字符讀入數(shù)組的指定位置,返回值為讀取的字符數(shù),如果已經(jīng)達(dá)到流的結(jié)尾,則為-1字符輸入流字符流的操作publicstaticvoidmain(String[]args){ FileReaderfreader=null; try{
//創(chuàng)建FIleReader對(duì)象 freader=newFileReader("D:\\test\\text1.txt");
char[]temp=newchar[100];//設(shè)置一個(gè)字符讀取緩沖區(qū) intn; //一次讀取的字符個(gè)數(shù) while((n=freader.read(temp))!=-1){
System.out.println("讀取"+n+"個(gè)字符");
System.out.println(temp);//控制臺(tái)輸出讀取的字符 } }catch(IOExceptione){
System.out.println(“文件訪問異?!保?; e.printStackTrace(); }finally{ try{ if(freader!=null){ freader.close(); } }catch(IOExceptione){ e.printStackTrace(); } } }字符輸入流字符流的操作Writer類層次結(jié)構(gòu)
Writer是以char為單位寫文件的一個(gè)輸出流(字符流)接口,其中最基本的一個(gè)實(shí)現(xiàn)類是FileWriter,可以將內(nèi)存中的數(shù)據(jù)以字符為單位輸出到指定文件中。字符輸出流使用FileWriter寫數(shù)據(jù)到指定文件,首先需要使用其構(gòu)造方法創(chuàng)建字符輸出流對(duì)象,然后將內(nèi)存中的數(shù)據(jù)以字符為單位寫入到指定文件中,主要使用以下基本操作。1)創(chuàng)建輸出流對(duì)象:FileWriter(StringfileName)//創(chuàng)建一個(gè)輸出流對(duì)象如:FileReaderin=newFileReader("D:\test\text1.txt");創(chuàng)建一個(gè)向D:\test\text1.txt文件中寫字符數(shù)據(jù)的輸出流對(duì)象。FileWriter(StringfileName,booleanappend)創(chuàng)建一個(gè)輸出流對(duì)象,第二個(gè)布爾值參數(shù),表示是否追加寫入的數(shù)據(jù),如果為true,表示在文件末尾追加數(shù)據(jù);如果為false,表示覆蓋原文件內(nèi)容。2)寫文件,與字節(jié)流相似也有有三種寫數(shù)據(jù)的方法。voidwrite()
//寫一個(gè)字符voidwrite(char[]cbuf)
//寫入一個(gè)字符數(shù)組voidwrite(char[]c,intstart,intlen)//寫入字符數(shù)組的指定部分字符流的操作字符輸出流字符流的操作publicstaticvoidmain(String[]args){ try{ Filefile=newFile("D:\\stu\\student.txt");
//創(chuàng)建C:\stu\student.txt文件 file.createNewFile();
//創(chuàng)建FileWriter對(duì)象 FileWriterfwriter=newFileWriter(file);
//向文件寫入內(nèi)容
fwriter.write("少年強(qiáng)則國(guó)強(qiáng)")
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 塑粉采購合同塑料制品購銷合同
- 歷史文物保護(hù)與修復(fù)技術(shù)試卷分析
- 玻璃體相關(guān)知識(shí)培訓(xùn)課件
- 港口裝卸與倉儲(chǔ)管理作業(yè)指導(dǎo)書
- 家庭家居保潔服務(wù)合同書
- 森林碳匯項(xiàng)目開發(fā)與合作協(xié)議
- 任務(wù)6.2.4 建筑物沉降觀測(cè)
- 安全生產(chǎn)承包的合同
- 氣象基礎(chǔ)知識(shí)培訓(xùn)課件
- 面向客戶的宣傳資料制作方案
- 壓裂評(píng)價(jià)中常見曲線分析
- (新版)網(wǎng)絡(luò)攻防知識(shí)考試題庫(含答案)
- 2023年湖北省技能高考文化綜合試題及答案
- 自然辯證法概論課件:第一章馬克思主義自然觀
- 廣東粵教版第3冊(cè)上信息技術(shù)課件第5課神奇的變化-制作形狀補(bǔ)間動(dòng)畫(課件)
- 連鎖藥店運(yùn)營(yíng)管理
- (中職)中職生禮儀實(shí)用教材完整版PPT最全教程課件整套教程電子講義(最新)
- 民航旅客運(yùn)輸完整版ppt-全體教學(xué)教程課件最新
- JJF (石化) 007-2018 鉛筆硬度計(jì)校準(zhǔn)規(guī)范-(高清現(xiàn)行)
- 《中醫(yī)兒科學(xué)》課件生理病因病理特點(diǎn)
- 迪士尼樂園主題PPT模板
評(píng)論
0/150
提交評(píng)論