版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Java程序設(shè)計及應(yīng)用開發(fā)教程主編:虞益誠E-mail:yuyich@教學(xué)課件1/11/20231Java程序設(shè)計及應(yīng)用開發(fā)教程構(gòu)架Java語言以其面向?qū)ο笮?、可重用性、平臺無關(guān)性、多線程、安全可靠等特性成為網(wǎng)絡(luò)程序設(shè)計中的佼佼者,受到廣泛的青睞三大模塊Java概述與語言基礎(chǔ)Java異常處理圖形用戶界面編程Java線程機制與AppletJavaJava應(yīng)用開發(fā)與課程設(shè)計實例教參Java流程控制及數(shù)組與字符串高級GUI設(shè)計技術(shù)輸入輸出流Java網(wǎng)絡(luò)編程基礎(chǔ)Java數(shù)據(jù)庫連接第13-15
章
應(yīng)用開發(fā)篇
第1-6
章基礎(chǔ)知識篇
第7-12章程序設(shè)計篇
面向?qū)ο蟪绦蛟O(shè)計和繼承與多態(tài)1/11/20232第12章輸入輸出流第12章輸入輸出流
12.1
流概述12.2
基本輸入輸出流12.3 標(biāo)準(zhǔn)輸入輸出12.4 文件處理12.5 本章小結(jié)
輸入輸出流是Java中輸入輸出功能的基礎(chǔ),是最基本的操作,許多程序需要讀寫數(shù)據(jù)都離不開I/O方法。本章主要講述了流、輸入輸出流、InputStream類、OutputStream類、Reader類和Writer類,同時介紹了標(biāo)準(zhǔn)輸入和輸出和文件處理。1/11/20233第12章輸入輸出流12.1流概述輸入輸出流是Java中輸入輸出功能的基礎(chǔ),是最基本的操作,許多程序需要讀寫數(shù)據(jù)都離不開I/O方法。12.1流概述12.1.1流流(stream)是面向?qū)ο蟪绦蛘Z言中數(shù)據(jù)輸入輸出的處理技術(shù),輸入和輸出都以流的方式進(jìn)行的。Java的I/O流提供了讀寫數(shù)據(jù)的標(biāo)準(zhǔn)方法。12.1.2輸入輸出流流一般分為輸入流(InputStream)和輸出流(OutputStream)兩類。輸入流(InputStream)即數(shù)據(jù)從外部世界流向計算機。輸入流將外部設(shè)備數(shù)據(jù)引入到計算機中,例如從網(wǎng)絡(luò)中讀取信息,從掃描儀中讀取圖像信息等;輸出流(OutputStream)即是數(shù)據(jù)從計算機流向外部世界。輸出流將數(shù)據(jù)引導(dǎo)到外部設(shè)備(屏幕或文件),例如向網(wǎng)絡(luò)中發(fā)布信息,在屏幕上顯示圖像和文件內(nèi)容等。當(dāng)要讀入數(shù)據(jù)時程序先從數(shù)據(jù)源(文件,網(wǎng)絡(luò))打開一個流,然后從這個流中順序讀取數(shù)據(jù)。當(dāng)要輸出數(shù)據(jù)時程序打開一個流,通過這個流按序?qū)懭霐?shù)據(jù)。圖12-1輸入輸出流操作過程1/11/20234第12章輸入輸出流
12.1流概述根據(jù)輸入輸出數(shù)據(jù)類型,可將輸入輸出流分為字節(jié)流/字符流字節(jié)流以字節(jié)為單位(Byte:8位流,一次讀8位)操作數(shù)據(jù),字符流以字符為單位(一次讀16位)操作數(shù)據(jù)。流的分類方法如圖12-2所示。Java的java.io包庫中包含了InputStream和OutputStream兩個抽象類,它們是所有基于字節(jié)輸入/輸出處理的父類(超類);此外,尚融入了Reader和Writer兩個類,它們是所有基于字符輸入/輸出處理的超類(父類)。1/11/20235第12章輸入輸出流12.1流概述字節(jié)流從InputStream和OutputStream派生出來的一系列類。InputStream、OutputStream
FileInputStream、FileOutputStream
PipedInputStream、PipedOutputStream
ByteArrayInputStream、ByteArrayOutputStream
FilterInputStream、FilterOutputStream
DataInputStream、DataOutputStream
BufferedInputStream、BufferedOutputStream字符流從Reader和Writer派生出的一系列類。Reader、Writer
InputStreamReader、OutputStreamWriter
FileReader、FileWriter
CharArrayReader、CharArrayWriter
PipedReader、PipedWriter
FilterReader、FilterWriter
BufferedReader、BufferedWriter
StringReader、StringWriter
1/11/20236第12章輸入輸出流12.2基本輸入輸出流InputStream和OutputStream為其子類提供了字節(jié)流處理方法如圖12-3所示read()方法可用于讀取流數(shù)據(jù)writer()方法則用作寫入流數(shù)據(jù)。1/11/20237第12章輸入輸出流12.2基本輸入輸出流Reader和Writer類為其子類提供了字符流數(shù)據(jù)處理方法。如圖12-4所示1/11/20238第12章輸入輸出流12.2.1InputStream類
InputStream類是以字節(jié)為單位的輸入流。這個類可以作為許多輸入類的基類。數(shù)據(jù)來源可以是鍵盤,也可以是網(wǎng)絡(luò)環(huán)境。InputStream類是一個抽象類,因此不能建立其實例類,相反用戶必須使用其子類。注意,大多數(shù)輸入方法都拋出IOException異常。如果程序中調(diào)用拉這些輸入方法,就必須捕獲和處理IOException異常。類InputStream處于InputStream類層次的最頂層read方法read方法用于從指定的輸入流讀取以字節(jié)為單位的數(shù)據(jù),第一次從流開始位置讀取,以后每次從上次結(jié)束部位開始讀取實現(xiàn)了位移。read方法有以下三種形態(tài)publicintread(bytebuff[])throwsIOException該方法可用于一次讀取多個字節(jié),讀入字節(jié)直接放入buff數(shù)組中,并返回讀取字節(jié)數(shù)。且須保證數(shù)組有足夠大來保存所要讀入的數(shù)據(jù),否則Java就會拋出一個IOException。(例12-1)1/11/20239第12章輸入輸出流12.2.1InputStream類
publicabstractintread()throwsIOException該方法不帶參數(shù)每次一個字節(jié)從指定的輸入流中讀取數(shù)據(jù)。然后以此數(shù)據(jù)作為低字節(jié),在配上全零字節(jié)構(gòu)成16位整形數(shù)據(jù)返回給調(diào)用語句,若輸入流無數(shù)據(jù)返回的值是-1。常通過System.io.read()來調(diào)用。(
例12-2)publicintread(bytebuff[],intstart,int
len)從start起讀取輸入流數(shù)據(jù)并填充len長度個字節(jié)到buff中,返回值為實際的填充數(shù),若返回值<len,表示已將指定流中的數(shù)據(jù)讀完。i此方法可用于防止數(shù)組越界:即start為0,len設(shè)成數(shù)組長度。這樣既可填充整個數(shù)組,又能保證不會越界。available方法格式:publicintavailable()throwsIOException功能:返回當(dāng)前流中int型可用字節(jié)數(shù)。 P165
close方法格式:publicviodclose()throwsIOException功能:關(guān)閉當(dāng)前流對象,回收此連接所用的資源。1/11/202310第12章輸入輸出流12.2.1InputStream類skip方法格式:publiclongskip(longn)throwsIOException功能:跳過指定的字節(jié)數(shù),使指定流中的當(dāng)前位置移動n個字節(jié)。InputStream類中用來控制定位指針的有如下幾個常用方法:publicSynchronizedvoidreset()throwsIOException:指針移到流中標(biāo)記位置publicBooleanmark():在指針當(dāng)前位置作一個標(biāo)記。publicBooleanmarkSupport():返回一個表示流是否支持標(biāo)記和復(fù)位操作的布爾值。使用InputStream的注意點:當(dāng)程序中調(diào)用InputStream進(jìn)行請求,所調(diào)用的方法就處在等待狀態(tài),這種狀態(tài)就是“堵塞”。請分析下面一段程序:Try{int.byt=System.in.read();}catch(IOException
e){System.out.println(e.toString());}當(dāng)程序運行到System.in.read()的時候就等待用戶輸入,直到用戶輸入一個回車鍵為止。InputStream類操作的是字節(jié)數(shù)據(jù),不是字符。流是通過-1來標(biāo)記結(jié)束的。須用整數(shù)作為返回輸入值才可捕捉到流結(jié)束。從字節(jié)輸入流InputStream類的層次結(jié)構(gòu)圖可看出,InputStream是所有基于字節(jié)的輸入流類的超類。1/11/202311第12章輸入輸出流12.2.1InputStream類InputStream子類用法:FileInputStream:把一個文件作為字節(jié)輸入流,見文件處理一節(jié)。PipedInputStream,用于從管道中讀取數(shù)據(jù),具體體現(xiàn)在線程中。FilterInputStream,建立一個輸入過濾器,不直接使用,通常使用該類的派生類如BufferedInputStream等。BufferedInputStream,提供了內(nèi)部緩沖操作,使得實際數(shù)據(jù)可按塊讀取。DataInputStream,可讀或?qū)慗ava基本數(shù)據(jù)類型組成的流。LineNumberInputStream,用于記錄輸入流中的行號??梢杂胓etLineNumber()獲得當(dāng)前的行號,而setLineNumber()可以用于設(shè)置當(dāng)前行的行號,是FilterInputStream類的子類。PushbackInputStream,利用unread()方法,可將一個字節(jié)送回輸入流中。SequenceInputStream,把多個輸入流順序合并為一個輸入流中。StringBufferInputStream,把一個String對象用作輸入流。ObjectInputStream,將對象值及類定義等從指定輸入流讀入以便重新對象化?!纠?2-1】 【例12-2】1/11/202312第12章輸入輸出流12.2.1InputStream類【例12-3】讀取一個文本文件并將其顯示到屏幕上。importjava.io.*;classFileInput{publicstaticvoidmain(String
args[]) {bytebuffer[]=newbyte[2056]; try{FileInputStream
fileInput=newFileInputStream("e:\\test.txt");
intbytes=fileInput.read(buffer,0,2056); Stringstr=newString(buffer,0,0,bytes);System.out.println(str);}
catch(Exceptione){System.out.println(e.toString());} }}//程序運行結(jié)果如圖12-6所示。1/11/202313第12章輸入輸出流12.2.2OutputStream類
OutputStream位于OutputStream類層次的最頂層,它是一個抽象類,write方法write方法與InputStream的read方法相對應(yīng),它有三個形態(tài)publicviodwrite(bytebuff[])throwsIOException:向流中寫入一個字節(jié)數(shù)組,指定buff數(shù)組數(shù)據(jù)輸出到Stream;publicvoidwrite(bytebuff[],intoff,int
len)throwsIOException:將指定buff數(shù)組中的數(shù)據(jù)從第二個參數(shù)開始,輸出第三個參數(shù)指定的長度到指定的Stream;publicabstractvoidwirte(intbuff)throwsIOException;將一個int值輸出到指定的Stream;flush方法格式:publicvoidflush()throwsIOException功能:清空流并強制緩沖區(qū)中所有數(shù)據(jù)寫入到流中。Close方法格式:publicvoidclose()throwsIOException功能:Close用于關(guān)閉指定的輸出流。使用過程中要注意,OutputStream是抽象類,不能直接建立它的實例,但可使用如下語句建立輸出流對象:OutputStream
os=newFileOutStream(“test.dat”);1/11/202314第12章輸入輸出流12.2.2OutputStream類OutputStream是所有基于字節(jié)輸出流類的超類,是抽象類,不能用來直接創(chuàng)建對象,可在其子類的對象中被使用的。具體介紹如下:OutputStream的子類的用法
(1)FileOutputStream,文件字節(jié)輸出流,見文件處理一節(jié)。(2)PipedOutputStream。該類創(chuàng)建的對象稱為一個輸出管道。PipedOutputStream與PipedInputSteam相互配合實現(xiàn)兩個線程之間的通信,它們的定義格式如下:PipedInputStream
sIn=PipedInputStream();PipedOutputStream
sOut=PipedOutputStream(sIn);(3)FilterOutputStream。該類用于建立一個輸出過濾器,它將另一個輸出流作為其類定義的一部分存儲。FilterOutputStream的標(biāo)準(zhǔn)子類是BufferedOutputStream、DataOutStream、PrintStream。使用上這與FilterInputStream中的幾個子類類似。BufferedOutputStream。功能是為輸出流做緩沖,可使用flush方法。DataOutputStream。它執(zhí)行輸入流中基本的Java數(shù)據(jù)類型的數(shù)據(jù)輸出。1/11/202315第12章輸入輸出流12.2.2OutputStream類(4)ByteArrayOutputStream。該類是將數(shù)據(jù)寫入流內(nèi)部字節(jié)數(shù)組緩沖區(qū),執(zhí)行時將輸出流指向一個Byte數(shù)組,該類有兩個構(gòu)造函數(shù):ByteArrayOutputStream():該構(gòu)造函數(shù)會在內(nèi)部創(chuàng)建一個長度為32的Byte數(shù)組;ByteArrayOutputStream(intn):在對象內(nèi)部創(chuàng)建一個長度為n的Byte數(shù)組。ByteArrayOutputStream從OutputStream類繼承下來,所以它具write、flush及close等方法,同時它還具有以下幾個特殊的方法:toString():將對象內(nèi)部的Byte數(shù)組轉(zhuǎn)化成字符串(String(buf,0,count);toString(intn):將對象對部的Byte數(shù)組轉(zhuǎn)化成字符串,編碼方式為n;toString(Stringn):將對象對部的數(shù)組轉(zhuǎn)化成字符串,編碼方式為n;toByteArray():返回對象內(nèi)部的Byte數(shù)組;writeTo(OutputStream):將內(nèi)部Byte數(shù)組輸出到指定的輸出流;reset():將對象內(nèi)部Byte數(shù)組的長度設(shè)為0,{count=0};size():返回Byte數(shù)組長度。(5)ObjectOutputStream。該類是用于將原始數(shù)據(jù)類型以及整個對象寫到一個流中?!纠?2-4】程序完成接收標(biāo)準(zhǔn)輸入的數(shù)據(jù),并輸出到標(biāo)準(zhǔn)輸出。1/11/202316第12章輸入輸出流12.2.3Reader類Java提供了對字符類型的數(shù)據(jù)流操作的Reader類和Writer類。
Reader類的方法Reader類是處理所有字符流輸入類的父類,具有以下方法:(1)read方法。是從輸入流中讀取字符流數(shù)據(jù)的方法。它有兩種不同的方法形式。publicintread()throwsIOException;用于讀取一個字符,返回值為`讀取的字符publicint
read(char
cbuf[])throwsIOException;用于讀取一系列字符到數(shù)組cbuf[]中,返回值為實際讀取的字符的數(shù)量。publicabstractint
read(char
cbuf[],int
off,int
len)throwsIOException;用于讀取len個字符,從數(shù)組cbuf[]下標(biāo)off處開始存放,返回值為讀取的字符數(shù)量,該方法須由子類實現(xiàn)。(2)定位指針方法。Reader類中定位指針方法有如下幾種類:publicSynchronizedvoidreset()throwsIOException:指針移動到流中標(biāo)記位置。publicvoidmark(int
readAheadLimit)throwsIOException:給當(dāng)前流作標(biāo)記,最多支持readAheadLimit個字符的回溯。publicBooleanmarkSupport():返回一個表示流是否支持標(biāo)記和復(fù)位操作的布爾值。1/11/202317第12章輸入輸出流12.2.3Reader類publiclongskip(longn)throwsIOException:功能是跳過指定的字節(jié)數(shù)。余同前所述。(3)close()方法,關(guān)閉流。格式為:publicviodclose()throwsIOException。關(guān)閉輸入源。進(jìn)一步的讀取將會產(chǎn)生IOException異常。2.Reader子類的使用(1)FileReader,創(chuàng)建一個可讀取文件內(nèi)容的Reader類。常用的構(gòu)造函數(shù)顯示如下:FileReader(String
filePath)throwsFileNotFoundExceptionFileReader(File
fileObj)throwsFileNotFoundException每一個都能引發(fā)一個FileNotFoundException異常。讀取方法格式如下:Publicintread()throwsIOExceptionpublicint
read(char[]cbuf,intoff,int
len)throwsIOException該組方法用于從文件中讀取字符數(shù)據(jù)。其中,cbuf是保存讀取到的數(shù)據(jù)的字符數(shù)組,off是輸入流的字符偏移量,len是將要讀取的字符數(shù)??梢杂胷ead()一次一個字符地讀取,也可以按字符數(shù)組的容量或指定的字符數(shù)成批地讀取。1/11/202318第12章輸入輸出流12.2.3Reader類可使用close()方法與getEncoding(可獲得文件流當(dāng)前使用的編碼機制,返回值是代表編碼名稱的字符串)。(2)FilterReader,是過濾字符輸入流的超類。其子類為PushbackReader。(3)BufferedReader,可創(chuàng)建的對象稱為指向Reader流緩沖輸入流。(4)CharArrayReader,是一個把字符數(shù)組作為源輸入流來實現(xiàn)。該類有兩個構(gòu)造函數(shù),每一個都需要一個字符數(shù)組提供數(shù)據(jù)源:CharArrayReader(chararray[])CharArrayReader(chararray[],intstart,int
numChars)這里array是輸入源。第二個構(gòu)造函數(shù)從字符數(shù)組的子集創(chuàng)建了一Reader,該子集以start指定索引開始,長度為numChars?!纠?2-6】從當(dāng)前目錄下源文件中逐行讀取并把它輸出到標(biāo)準(zhǔn)輸入流?!纠?2-7】演示一個編程語言解析器怎樣用一個堆回流處理,用于比較“==”操作符和用于賦值的“=”操作符間的不同。1/11/202319第12章輸入輸出流12.2.4Writer類Writer類是處理所有字符流輸出類的父類。Writer類的方法如下:(1)write方法,可向輸出流寫入字符。有如下幾種形式:publicvoidwrite(intc)throwsIOException;//將整型值c的低16位寫入輸出流publicvoidwrite(char
cbuf[])throwsIOException;//將字符數(shù)組cbuf[]寫入輸出流publicabstractvoidwrite(char
cbuf[],int
off,int
len)throwsIOException;可將字符數(shù)組cbuf[]中的從索引為off的位置處開始的len個字符寫入輸出流。publicvoidwrite(String
str)throwsIOException;可將字符串str中的字符寫入輸出流publicvoidwrite(String
str,int
off,int
len)throwsIOException;可將字符串str
中從索引off開始處的len個字符寫入輸出流。
(2)flush方法,可刷新輸出緩沖。格式為abstractvoidflush();功能為定制輸出狀態(tài)以使每個緩沖器都被清除。也就是刷新輸出緩沖。(3)close方法,關(guān)閉輸出流。格式為:publicabstractvoidclose()throwsIOException;關(guān)閉后的寫操作會產(chǎn)生IOException異常。1/11/202320第12章輸入輸出流12.2.4Writer類2.Writer子類的使用(1)FileWriter子類。創(chuàng)建一個可以寫文件的Writer類。它可引發(fā)IOException或SecurityException異常。它最常用的構(gòu)造函數(shù)如下:FileWriter(String
filePath);FileWriter(String
filePath,booleanappend);FileWriter(File
fileObj);這里,filePath是文件的完全路徑,fileObj是描述該文件的File對象。如果append為true,輸出是附加到文件尾的。若試圖打開一個只讀文件,將引發(fā)一個IOException異常。FileWriter類也沒有自己的實例方法,而是從OutputStreamWriter繼承而來。寫入方法格式如下:publicvoidwirte(intc)throwsIOExceptionpublicvoidwirte(char[]cbuf,intoff,int
len)throwsIOExceptionpublicvoidwirte(String
str,intoff,int
len)throwsIOException關(guān)閉方法格式如下:publicvoidclose()throwsIOException。(2)PipedWriter,該類是傳送的字符輸出流。它的構(gòu)造方法如下:
1/11/202321第12章輸入輸出流12.2.4Writer類publicPipedWriter(PipedReader
snk)throwsIOException;可創(chuàng)建傳送writer,使其連接到指定的傳送reader。寫入此流的數(shù)據(jù)字符稍后將用作snk
的輸入。publicPipedWriter();可創(chuàng)建一個尚未連接到reader的傳送writer。須在使用前將其連接到傳送reader既可由接收方連接,也可由發(fā)送方連接。
publicvoidwrite(char[]cbuf,intoff,int
len)throwsIOException;將len
字符從指定初始偏移量為off的字符數(shù)組寫入到此傳送輸出流。如果某個線程正從連接的傳送輸入流讀取數(shù)據(jù)字符,但該線程不再處于活動狀態(tài),則拋出IOException。主要方法如下:publicvoidflush()throwsIOException;刷新此輸出流并強制寫出所有緩沖的輸出字符。這將通知所有reader,告知管道中的字符處于等待中。publicvoidclose()throwsIOException;關(guān)閉此輸出流并釋放相關(guān)的所有系統(tǒng)資源。1/11/202322第12章輸入輸出流12.2.4Writer類(3)FilterWriter,用于寫入已過濾的字符流的抽象類。(4)BufferedWriter,將文本寫入字符輸出流,可提供單字符、數(shù)組等的寫入。(5)CharArrayWriter,實現(xiàn)以數(shù)組作為目標(biāo)的輸出流。它有兩個構(gòu)造函數(shù):CharArrayWriter()與CharA
rrayWriter(int
numChars)。前者創(chuàng)建了一個默認(rèn)長度的緩沖器。后者緩沖器長度由numChars指定。緩沖器保存在CharArrayWriter的buf
成員中。(6)StringWriter:用來完成字符串緩沖區(qū)的字符串輸出。使用方法與FileWriter等類。(7)PrintWriter。PrintStream的字符形態(tài),提供格式化的輸出方法print()和println()。【例12-8】本例創(chuàng)建了一個樣本字符緩沖器,先生成一個String,然后用getChars()方法提取字符數(shù)組。該例創(chuàng)建了三個文件。第一個file1.txt,包含例子中的隔個字符。第二個file2.txt,包含所有的字符。第三個文件file3.txt,只含有最后的四分之一。1/11/202323第12章輸入輸出流12.3標(biāo)準(zhǔn)輸入和輸出標(biāo)準(zhǔn)輸入輸出是指鍵盤輸入和屏幕打印。屏幕輸出方法就是:System.out.print()和System.out.println(),兩者的區(qū)別是后者多輸出一個回車換行符“\n\r”。Java的標(biāo)準(zhǔn)數(shù)據(jù)流是指在命令方式下進(jìn)行數(shù)據(jù)的輸入、輸出的流。Java標(biāo)準(zhǔn)輸入輸出流包括三種:System.in:標(biāo)準(zhǔn)輸入流。通常,此流對應(yīng)于鍵盤輸入或者由主機環(huán)境或用戶指定的另一個輸入源,屬于InputStream類對象。System.out:標(biāo)準(zhǔn)輸出流。通常,此流對應(yīng)于顯示器輸出或者由主機環(huán)境或用戶指定的另一個輸出目標(biāo),屬于PrintStream類對象。System.err:標(biāo)準(zhǔn)錯誤輸出流。屬于PrintStream類對象,用于系統(tǒng)錯誤信息的輸出,此流對應(yīng)于顯示器輸出或者由主機環(huán)境或用戶指定的另一個輸出目標(biāo)。系統(tǒng)輸出時使用了PrintStream類的兩個方法print()和println()。err的作用是把標(biāo)準(zhǔn)I/O方法的錯誤顯示在屏幕上,用法為:System.err.print();就象DOS命令的出錯信息一樣。輸入時要用到InputStream類的read()方法它從輸入流中讀取一個字節(jié)(byte),返回類型是int。
1/11/202324第12章輸入輸出流12.3.1標(biāo)準(zhǔn)輸入System.in完成標(biāo)準(zhǔn)輸入,其中讀取數(shù)據(jù)的方法如下:publicintread()throwsIOException;或publicint
read(byte[]b)throwsIOException;這兩種方法可讀取單字節(jié)或字節(jié)數(shù)組數(shù)據(jù)。其中read()將讀取的字節(jié)以整數(shù)值返回。read(byte[]b)將讀取字符串保存在字節(jié)數(shù)組b中。【例12-10】【注意】(1)read()讀入的是int類型,如果用System.out.print顯示到屏幕上,該字節(jié)的編碼(如A=65)。把它加入到字符串中,需要強制轉(zhuǎn)型(char)b。(2)使用System.in.read()要求try-catch語句處理異常,否則編譯程序會提示你。(3)String類型無法把單個字符添加進(jìn)去,可用StringBuffer類型。12.3.2標(biāo)準(zhǔn)輸出Java使用屬于PrintStream類的System.out來完成標(biāo)準(zhǔn)輸出,包括兩個標(biāo)準(zhǔn)輸出方法:publicvoidprint(long);和publicvoidprintln();1/11/202325第12章輸入輸出流12.3.2標(biāo)準(zhǔn)輸出這兩種方法分別按連續(xù)或分行輸出數(shù)據(jù)。其中Print()方法在輸出數(shù)據(jù)串后不加回車符,下次再調(diào)用該方法時,數(shù)據(jù)串將接著上次的數(shù)據(jù)串繼續(xù)輸出。println()方法則按整行輸出,輸出完后加一回車符自動換行,兩者顯著區(qū)別是print()輸出后不換行,而println()方法輸出后換行【例12-12】從鍵盤輸入字符,體現(xiàn)了標(biāo)準(zhǔn)輸出的用法。12.3.3標(biāo)準(zhǔn)出錯有時人們尚關(guān)注程序中System.err標(biāo)準(zhǔn)錯誤信息的輸出,與System.out相同,采用PrintStream類的對象實現(xiàn)標(biāo)準(zhǔn)輸出。12.4文件處理在程序運行過程中,若輸入的信息量很大,僅用鍵盤和顯示器回顯得不便,此時使用文件來存儲、讀取、輸出就會大幅提高效率,顯得便捷。在Java中,F(xiàn)ile類提供了描述文件和目錄的一種方法。1/11/202326第12章輸入輸出流12.4文件處理12.4.1File類方法在Java中文件和目錄都是用File對象來表示的,通過File類提供的構(gòu)造方法成員方法(如表12-1所示)。1/11/202327第12章輸入輸出流12.4文件處理1.File類的構(gòu)造方法每個File類的對象都對應(yīng)了系統(tǒng)的一個文件或目錄,創(chuàng)建File類的對象時需指明它所對應(yīng)的文件或目錄名。為了便于建立File對象,F(xiàn)ile類提供了如下三個不同的構(gòu)造方法(如表12-1所示),現(xiàn)在說明一下其中的相關(guān)參數(shù)。publicFile(String
pfname)構(gòu)造方法中參數(shù)pfname指明了新建File對象所對應(yīng)的磁盤文件或目錄名及其路徑名。Pfname包括絕對路徑與相對路徑兩種情況,例如c:\a1\Example.java:絕對路徑,表示C盤下a1子目錄中的文件Example.java?!癨a1\Example.java”,相對路徑表示運行該程序的當(dāng)前目錄下子目錄a1中的文件Example.java。通常,為了保證程序的可移植性,使用相對路徑較好。publicFile(String
dirPath,String
fname)構(gòu)造方法中dirPath表示對應(yīng)文件或目錄的絕對或相對路徑,filename是不帶路徑的文件名。例如:Filef=newFile(“\docs”,”file.dat”);publicFile(Filef,Stringfname)構(gòu)造方法中f是文件所在目錄的文件對象,fname是不帶路徑的文件名。例如:Stringsdir=”a1”+System.dirSep+”java”;Stringsfile=”FileIO.data”;FileFdir=newFile(sdir);FileFfile=newFile(Fdir,sfile);
1/11/202328第12章輸入輸出流12.4文件處理2.File類的成員方法File類的成員方法如表12-1所示,包括:文件名的處理、文件屬性測試、普通文件信息和工具與目錄操作四類?!纠?2-13】本程序使用File類對象對指定文件進(jìn)行自動更新的操作12.4.2FileInputStream類FileInputStream類是把一個文件作為字節(jié)輸入流,實現(xiàn)對文件的讀取操作。為了創(chuàng)建FileInputStream類的對象,可使用構(gòu)造方法,格式如下:publicFileInputStream(Stringname)throwsFileNotFoundExceptionpublicFileInputStream(Filefile)throwsFileNotFoundException前者使用給定文件名name創(chuàng)建一個FileInputStream對象;后者使用File對象創(chuàng)建FileInputStream。輸入流通過使用read()方法從輸入流讀出源中的數(shù)據(jù),格式同前。12.4.3FileOutputStream類FileOutputStream類把文件作為字節(jié)輸出流,提供基本的文件寫入能力。創(chuàng)建FileOutputStream類的對象,可使用構(gòu)造方法。格式如下:publicFileOutputStream(Stringname)throwsFileNotFoundExceptionpublicFileOutputStream(Filefile)throwsFileNotFoundException1/11/202329第12章輸入輸出流12.4.3FileOutputStream類輸出流通過使用write()方法把數(shù)據(jù)寫入輸出流到達(dá)目的地。write方法的格式如下:publicviod
write(intb)throwsIOExceptionpublicviodwrite(byte[]b)throwsIOExceptionpublicviodwrite(byte[]b,intstart,int
len)throwsIOException該組方法
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工行業(yè)員工績效考核
- 市場行業(yè)策劃員工作總結(jié)
- 瞄準(zhǔn)高效輸出的年度目標(biāo)計劃
- 2024年廣西壯族自治區(qū)北海市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2024年河北省承德市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年浙江省寧波市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 美麗家庭事跡材料
- 河南省鄭州市(2024年-2025年小學(xué)六年級語文)部編版隨堂測試(上學(xué)期)試卷及答案
- 廣西北海市(2024年-2025年小學(xué)六年級語文)統(tǒng)編版小升初模擬(上學(xué)期)試卷及答案
- 2025年家電配線組件項目規(guī)劃申請報告
- 養(yǎng)豬場施工噪聲環(huán)境影響分析
- Windows-Server-2012網(wǎng)絡(luò)服務(wù)架構(gòu)課件(完整版)
- 2022版義務(wù)教育語文課程標(biāo)準(zhǔn)(2022版含新增和修訂部分)
- 形位公差_很詳細(xì)(基礎(chǔ)教育)
- 手榴彈使用教案
- 600MW機組除氧器水位控制系統(tǒng)
- 史上最全的涉稅風(fēng)險
- 初中數(shù)學(xué)問題情境的創(chuàng)設(shè)
- 朱東潤《中國歷代文學(xué)作品選》目錄簡體字版
- 電力設(shè)備典型消防規(guī)程.ppt
- 北京興昌達(dá)博房地產(chǎn)開發(fā)有限公司重整計劃
評論
0/150
提交評論