第九章java的高級(jí)編程_第1頁(yè)
已閱讀1頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第7章 JAVA輸入輸出流及文件操作,7.1 流的概念7.2 基本輸入輸出流7.3 文件操作,學(xué)習(xí)要求,理解流的概念掌握在Java中進(jìn)行文件讀、寫操作的方法,思考:,程序中數(shù)據(jù)的存儲(chǔ)方法有:?jiǎn)蝹€(gè)、臨時(shí)的:變量多個(gè)、同類型、臨時(shí)的(退出即消失):數(shù)組多個(gè)、不同類型、臨時(shí)的:向量,若Java應(yīng)用程序中需要較多或長(zhǎng)久保留的數(shù)據(jù),可以用什么方式進(jìn)行存儲(chǔ)和調(diào)用更有效呢?,7.1 流的概念,流(stream)是對(duì)輸入輸出設(shè)備的一種抽

2、象表示,指在計(jì)算機(jī)的輸入與輸出之間運(yùn)動(dòng)的數(shù)據(jù)的序列。輸入流:代表從外設(shè)流入計(jì)算機(jī)的數(shù)據(jù)序列輸出流:代表從計(jì)算機(jī)流向外設(shè)的數(shù)據(jù)序列流的特點(diǎn):數(shù)據(jù)的獲取和發(fā)送均按數(shù)據(jù)序列順序進(jìn)行。Java中的流分為兩種(被抽象為四個(gè)類): 字節(jié)流: InputStream類和OutputStream類 字符流: Reader類和 Writer類 字符流比字節(jié)流更有效。,1. 字節(jié)流,從抽象類InputStream和OutputStr

3、eam派生出來(lái)的一系列類,這類流以字節(jié)(byte)為基本處理單位。,基本輸入流類InputStream的常用方法,◇ 從流中讀取數(shù)據(jù):int read( ); //讀取一個(gè)字節(jié),返回值為所讀的字節(jié) int read( byte b[ ] ); 讀取多個(gè)字節(jié),放置到字節(jié)數(shù)組b中,通常讀取的字節(jié) 數(shù)量為b的長(zhǎng)度,返回值為實(shí)際讀取的字節(jié)的數(shù)量int read( byte b[ ], in

4、t off, int len ); 讀取len個(gè)字節(jié),放置到以下標(biāo)off開(kāi)始字節(jié)數(shù)組b中, 返回值為實(shí)際讀取的字節(jié)的數(shù)量 int available( );  //返回值為流中尚未讀取的字節(jié)的數(shù)量long skip( long n ); //讀指針跳過(guò)n個(gè)字節(jié)不讀,返回值為實(shí)際跳過(guò)的字節(jié)數(shù)量◇ 關(guān)閉流: close( ); //流操作完畢后必須關(guān)閉,基本輸出流類OutputStrea

5、m 的常用方法,◇ 輸出數(shù)據(jù):void write( int b );   //往流中寫一個(gè)字節(jié)bvoid write( byte b[ ] ); //往流中寫一個(gè)字節(jié)數(shù)組bvoid write( byte b[ ], int off, int len ); 把字節(jié)數(shù)組b中從下標(biāo)off開(kāi)始、長(zhǎng)度為len的字節(jié)寫入流中◇ flush( )  //刷空輸出流,并輸出所有被緩存的字節(jié) 由于某些流支持緩存功能,該方法將

6、把緩存中所有內(nèi)容強(qiáng)制輸出到流中?!?關(guān)閉流:   close( );  //流操作完畢后必須關(guān)閉,2 字符流,從抽象類Reader和Writer派生出的一系列子類,這類流以16位的Unicode碼表示的字符(一個(gè)字符由兩個(gè)字節(jié)組成)為基本處理單位。常用字符流子類和功能,7.2 基本輸入輸出流,1. 鍵盤輸入和格式化輸出 Java有3個(gè)內(nèi)置的標(biāo)準(zhǔn)流對(duì)象: 1)標(biāo)準(zhǔn)輸入流System.in: 用來(lái)讀取用戶從

7、鍵盤的輸入 2)標(biāo)準(zhǔn)輸出流System.out: 用來(lái)在屏幕上顯示信息 3)標(biāo)準(zhǔn)輸出流System.err: 用來(lái)顯示出錯(cuò)信息(1)鍵盤輸入: 使用System.in對(duì)象的read()方法 例: char c=(char)System.in.read( );使用InputStreamReader 、BufferReader流類例: InputStreamReader isr=new Input

8、StreamReader(System.in); BufferReader br=new BufferReader(isr);,通過(guò)Scanner類,Scanner 在java.util包中:Scanner類主要方法:1)nextInt() ——提示輸入一個(gè)整數(shù)2)nextDouble() ——提示輸入一個(gè)浮點(diǎn)數(shù)3)readLine(String prompt) ——提示輸入一個(gè)字符串,直到行結(jié)束。例:

9、Scanner s=new Scanner ( );int a=s.nextInt();double x1=scanner.nextDouble();,(2)格式化輸出,用Java的標(biāo)準(zhǔn)輸出System.out,可以輸出不同類型的對(duì)象: 例:Int a=20; System.out .print(a) System.out .println(“大家好”) //加換行 用java.text包中的Number

10、Format類可以控制顯示格式,有三種方法:NumberFormat.getNumberInstance( ) //附加逗號(hào)NumberFormat.getCurrencyInstance( ) //貨幣符號(hào)NumberFormat.getPercentInstance( ) //百分號(hào),例:import java.io.*; import java.text.*; Public class Test

11、Output{ Public static void main(String args[ ]){ double x=2345.123; String s1,s2,s3; NumberFormat n1=NumberFormat.getNumberInstance( ); NumberFormat c1=NumberFormat. getCurrencyInstance

12、( ); NumberFormat p1=NumberFormat. getPercentInstance( ) ; s1=n1.format(x); s2=c1.format(x); s3=p1.format(x); System.out.println(s1+” ”+ s2+” ”+ s3); } }結(jié)果: 2,345.123 ¥ 2,345.12 234,

13、512%,用戶自定義輸出格式—— 用DecimalFormat類和Format類 DecimalFormat類適合貨幣之類的格式化 Format類(在附帶的corejava包中,要把它加到classpath中)適合科技方面格式化,和C語(yǔ)言的printf函數(shù)功能類似。 DecimalFormat類的范例格式串,,Format的范例格式,首先加: import corejava.Format;f——固定格式的浮點(diǎn)數(shù)F

14、ormat.printf(“x的值是%10.2f\n”, x);d,i ——以十進(jìn)制表示的整數(shù)s——字符串c——字符g,G——以一般格式表示浮點(diǎn)數(shù),對(duì)小數(shù)用定點(diǎn)格式,對(duì)大數(shù)用指數(shù)格式x,X——以十六進(jìn)制表示的整數(shù)o——以八進(jìn)制表示例:Format.printf(“你的工資是%10.2f\n”, pay);,7. 3 文件操作,1. Java程序的文件與目錄管理 Java.io包中的File類專門用來(lái)管理磁盤文件

15、和目錄。每個(gè)File類的對(duì)象表示一個(gè)磁盤文件或目錄,對(duì)象屬性中包含名稱、長(zhǎng)度、所含文件個(gè)數(shù)等信息。(1)創(chuàng)建File類對(duì)象的三種方法:File(String path); —指明磁盤文件或目錄名及其路徑 注意:目錄分隔符用System.dirSep表示 如:File f1=new File(“c:”+ System.dirSep+”sj”)File(String path, String name);,文件或

16、目錄的路徑,文件或目錄名,File(File dir, String name); (2)獲取文件或目錄屬性,已經(jīng)存在的磁盤目錄,(3)文件或目錄的操作,注意:由于Java Applet程序是從網(wǎng)絡(luò)上下載到本地機(jī)器運(yùn)行的,不可知也不可控,所以Java的安全機(jī)制禁止Java Applet程序訪問(wèn)和存取本地文件,如果試圖在Java Applet程序中使用文件操作,則將引發(fā)Java的安全性異常。,2. 寫文本文件,方法一:用File

17、OutputStream打開(kāi)文件my.txt,然后用PrintStream 對(duì)象p的println方法把字符串寫入文件中。例:FileOutputStream fout=new FileOutputStream(“my.txt”)PrintStream p=new PrintStream(fout);p.println(“要寫入文本文件中的內(nèi)容”);p.close();,寫文本例子1,方法二:用FileWriter打開(kāi)文件m

18、yf.txt,又創(chuàng)建了文本輸出流out,然后用out 的print(或者println)方法把字符串寫入文件中。 例: FileWriter fw= new FileWriter(“myf.txt”); PrintWriter out=new PrintWriter(fw); out.print(“要寫入文本文件中的內(nèi)容”); out.close(); //關(guān)于輸出 fw.close(); //關(guān)閉文件

19、,寫文本例子2,3. 讀文本文件,方法一:用FileInputStream打開(kāi)文件my.txt,然后建立DataInputStream的 對(duì)象in(文件流),使用in的readLine()方法以一行為單位讀出my.txt文件中的所有字符串。例:FileInputStream fs=new FileInputStream(“my.txt”)DataInputStream in=new DataInputStream(fs);w

20、hile(in.available( )!=0) System.out.println( in.readLine() );in.close(); //關(guān)閉輸入流,讀文本例子1,方法二:用FileReader打開(kāi)文件myf.txt,然后用BufferedReader類的對(duì)象br作為文件流,用br 的readline()讀取文件中的字符串。 例: FileReader fr= new FileReader (“myf.txt”)

21、; BufferedReader br=new BufferedReader(fr);String record=new String( );Int recCount=0;While ((record=br.readLine())!=null){ recCount++; System.out.println(recCount+”:”+ record);} br.close(); //關(guān)于緩存

22、fr.close(); //關(guān)閉文件,讀文本例子2,4. 程序?qū)ξ募碾S機(jī)訪問(wèn),用RandomAccessFile類可以實(shí)現(xiàn)對(duì)文件的隨機(jī)讀寫操作,即可以在文件的任意位置執(zhí)行數(shù)據(jù)讀寫;創(chuàng)建RandomAccessFile的對(duì)象例:File mf= new File (“myf.txt”); RandomAccessFile myRAF= new RandomAccessFil

23、e (mf, ”rw”);,訪問(wèn)模式:rw: 可讀、可寫 r: 只讀,作為數(shù)據(jù)源的文件,對(duì)文件位置指針的操作,利用getPointer( )方法可以獲得當(dāng)前文件位置指針從文件頭算起的絕對(duì)位置: public long getPointer( );利用seek( )方法可以將指針移動(dòng)到pos指定的文件位置: public void seek( long pos );利用length( )方法可以

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論