《Java輸入輸出系統(tǒng)》PPT課件.ppt
1,Java程序設(shè)計(jì)基礎(chǔ),Email:laihan_ctbu,授課教師:賴涵,手機(jī):13527559014,3,內(nèi)容,什么是流?流的分類InputStreamOutputStreamReaderWriter什么是Fileter?文件操作舉例,4,輸入輸出流的概述,Java的輸入輸出基于流。importjava.io.*;,5,什么是流?,Stream,Stream,Stream,Stream,AstreamisapathofInformationfromasourcetoadestination,.doc.txt,6,內(nèi)容,什么是流?流的分類InputStreamOutputStreamReaderWriter什么是Fileter?文件操作舉例,7,流的分類,InputStream,OutputStream,Reader,Writer,ByteStreams,CharacterStreams,讀寫以字節(jié)為單位進(jìn)行,讀寫以字符為單位進(jìn)行,8,流的分類細(xì)說,InputStream和OutputStream提供面向字節(jié)的I/O。Reader和Writer提供面向字符的I/O。Reader和Writer提供國(guó)際化的支持。,9,InputStream的分類,InputStream是字節(jié)輸入流。它的幾種輸入源可以是:1.一個(gè)字節(jié)數(shù)組2.一個(gè)String對(duì)象3.一個(gè)文件4.一個(gè)管道,10,InputStream的分類,常用的InputStream流有下列幾個(gè):ByteArrayInputStreamStringBufferInputStreamFileInputStreamPipedInputStream,/把字節(jié)數(shù)組轉(zhuǎn)換為輸入流,/把字符串轉(zhuǎn)換為輸入流,/從文件中讀取數(shù)據(jù),/連接一個(gè)PipedOutPutStream,已廢棄!,11,OutputStream的分類,OutputStream是字節(jié)輸出流。它的幾種輸出目的地可以是:1.一個(gè)字節(jié)數(shù)組2.一個(gè)文件3.一個(gè)管道,12,OutputStream的分類,常用的OutputStream流有下列幾個(gè):ByteArrayOutputStreamFileOutputStreamPipedOutputStream,13,Reader3.PrintWriterout=newPrintWriter(4.newBufferedWriter(5.newFileWriter("out.txt");6.Strings;7.inti=1;8.while(s=in.readLine()!=null)9.out.println("line"+i+"="+s);10.i+;11.12.in.close();13.out.close();14.catch(FileNotFoundExceptione)15.System.err.println("cannotopenin.txt");16.catch(IOExceptione)17.System.err.println("I/Oexception");18.,FileIO.java代碼,29,例1:文件I/O舉例,firstsecondthirdforthfifthsixthseventh,line1=firstline2=secondline3=thirdline4=forthline5=fifthline6=sixthline7=seventh,正確運(yùn)行后,30,例1:文件I/O舉例,如果在當(dāng)前目錄下沒有in.txt文件,則運(yùn)行返回結(jié)果如下:思考一下,為什么?,31,例2:標(biāo)準(zhǔn)輸入讀操作舉例,這個(gè)例子演示從標(biāo)準(zhǔn)輸入的讀操作ReadFromStdin.java,Stream,例2:標(biāo)準(zhǔn)輸:標(biāo)準(zhǔn)輸入讀操作舉例,1.importjava.io.*;2.publicclassReadFromStdin3.publicstaticvoidmain(Stringargv)4.tryBufferedReaderis=newBufferedReader(newInputStreamReader(System.in);7.StringinputLine;8.while(inputLine=is.readLine()!=null)9.System.out.println(inputLine);10.11.is.close();12.catch(IOExceptione)13.System.out.println("IOException:"+e);14.15.16.,33,例3:DataOutputStream舉例,這個(gè)例子使用DataOutputStream過濾流,生成一個(gè)文件。,Stream,1.importjava.io.*;2.publicclassDataIODemo3.publicstaticvoidmain(Stringarg)4.tryDataOutputStreamout=newDataOutputStream(newFileOutputStream("text.txt");7.doubleprices=6.55,9.99,1.8,2.33,0.90;8.intunits=12,9,5,6,7;Stringdescs="chicken","beef","lettuce","potato","tomato"10.for(inti=0;i<prices.length;i+)11.out.writeDouble(pricesi);out.writeChar(t);12.out.writeInt(unitsi);out.writeChar(t);13.out.writeChars(descsi);out.writeChar(n);14.15.out.close();16.catch(IOExceptione)17.18.,DataIODemo.java,35,例4:DataInputStream舉例,這個(gè)例子使用DataInputStream過濾流。讀取例3生成的文件。,Stream,1.importjava.io.*;2.publicclassDataIODemo23.publicstaticvoidmain(Stringarg)4.DataInputStreamin=null;5.try6.in=newDataInputStream(newFileInputStream("text.txt");7.doubleprice,total=0.0;8.intunit;charch;StringBufferdesc;9.while(true)10.price=in.readDouble();in.readChar();11.unit=in.readInt();in.readChar();12.desc=newStringBuffer(20);13.while(ch=in.readChar()!=n)14.desc.append(ch);15.total=price*unit;16.System.out.println("youordered:"+desc17.+t+price+"*"+unit+"="+total);18.19.,DataIODemo2.java,接上頁(yè)20.catch(EOFExceptione)21.try22.in.close();23.catch(IOExceptione1)24.25.catch(IOExceptione)26.27.,DataIODemo2.java,38,作業(yè),上機(jī)實(shí)踐所講的例題。,