




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五章 流和文件處理1本章重點流的概念InputStream和OutputStream文件輸入輸出流類數據輸入輸出流類25.1Java中的流數據源和數據宿之間有序運動的數據序列.數據流分為輸入數據流和輸出數據流.流式輸入輸出的特點是數據的獲取和發送沿數據序列的順序進行.數據發送端(生產者)數據接收端(消費者)緩沖區緩沖區流的數據傳送35.1Java中的流45.1Java中的流java.lang.ObjectOutputStreamReaderWriterFileRandomAccessFileInputStream5字節流:從InputStream和OutputStream派生出來的一系列類。這類流以字節(byte)為基本處理單位。字符流:從Reader和Writer派生出的一系列類,這類流以16位的Unicode碼表示的字符為基本處理單位。61、輸入流的繼承關系InputStreamFileInputStreamByteArrayInputStreamObjectInputStreamFilterInputStreamDataInputStreamPipedInputStreamSequenceInputStreamPushbackInputStreamBufferedInputStream72、輸出流的繼承關系OutputStreamFileOutputStreamByteArrayOutputStreamObjectOutputStreamFilterOutputStreamDataOutputStreamPipedOutputStreamSequenceOutputStreamPrintStreamBufferedOutputStream8PrintStreamprint()println()write()5.2打印流95.2打印流System.in對象 System.in是InputStream類的對象,調用System.in.read()方法就可以實現標準輸入的讀操作.System.out對象 System.out是PrintStream類的對象,PrintStream類是FilterOutputStream類的子類,其中定義了可輸出多種不同類型數據的方法print()和println()方法.105.3系統屬性System類getProperty()setProperties()read()readLine()11例importjava.io.*;publicclassex22{ publicstaticvoidmain(Stringarg[])throwsIOException { charc; System.out.println("entercharacters,qtoquit."); do{ c=(char)System.in.read(); System.out.println(c); }while(c!='q'); }}12importjava.io.*;public
classex23{@SuppressWarnings("deprecation")public
static
voidmain(String[]args)throwsIOException{DataInputStreamin=newDataInputStream(System.in);Stringstr;System.out.println("Enterlinesoftext");System.out.println("Enter'End'ofquit");do{str=in.readLine();System.out.println(str);}while(!str.equals("End"));}}135.4輸入和輸出流InputStream類publicabstractintread()throwsIOException:從輸入流的當前位置讀取一個字節的數據,并返回一int型值,如果當前位置沒有數據則返回-1. publicintread(byte[]b):該方法從輸入流的當前位置開始讀取多個字節,并將它們保存到字節數組b中,同時返回所讀到的字節數,如果當前位置沒有數據則返回-1. publicintread(byte[]b,intoff,intlen):該方法從輸入流的當前位置讀取指定個數(len)的字節,并將讀取的字節寫入到off位置起的字節數組b中,,同時返回所讀到的字節數,如果當前位置沒有數據則返回-1. publicintavailable():返回輸入流中可以讀取的字節數. publicvoidclose():關閉輸入流,并釋放流占用的系統資源.14importjava.io.*;public
classex22{ public
static
voidmain(Stringarg[])throwsIOException{ bytec[]=new
byte[10]; System.out.println("enter10characters."); intp=System.in.read(c,5,5); Stringff=newString(c); System.out.println(ff); System.out.println(p); }}155.4輸入和輸出流OutputStream類publicvoidwrite(intb):將int型變量b的低字節寫入到數據流的當前位置. publicvoidwrite(byte[]b):將字節數組b的b.length個字節寫入到數據流的當前位置. publicvoidwrite(byte[]b,intoff,intlen):將字節數組b由下標off開始,長度為len的字節數據寫到輸出流. publicvoidflush():將緩沖區中的數據寫到外設并清空緩沖區. publicvoidclose():關閉輸出流并釋放輸出流占用的資源.165.4輸入和輸出流InputStream類和OutputStream類的常用子類 FileInputStream類和FileOutputStream類:負責從本地文件的讀寫數據. FilterInputStream類和FilterOutputStream類:過濾輸入輸出流,主要能夠對輸入輸出的數據作類型或格式上的轉換,實現了對二進制字節的編碼轉換,而它又進一步派生出一些具體的子類,如:DataInputStream、DataOutputStream和BufferedInputStream、BufferedOutputStream等. ByteArrayInputStream類和ByteArrayOutputStream類:用于進行內存數據的輸入和輸出。175.5文件和目錄File類publicFile(Stringpathname)創建一個對應于參數pathname的File類對象.參數pathname是包含目錄和文件名的字符串.如果沒有文件名,則代表目錄.例如, Filefile1=newFile("d:\\javapj\\myinput"); Filefile2=newFile("d:\\javapj\\myinput\\mysys.java");185.5文件和目錄publicFile(Stringparent,Stringchild)
該構造函數將pathname分成兩部分parent和child,參數parent表示目錄或文件所在路徑,參數child表示目錄或文件名稱.例如, Filefile1=newFile("d:\\javapj","myinput"); Filefile2=newFile("d:\\javapj\\myinput","mysys.java");195.5文件和目錄publicFile(Fileparent,Stringchild)該構造函數與上面一個的不同之處,在于將parent的參數類型由String變為File,代表parent是一個已經創建了的File類文件對象(指向目錄).例如, Filefile1=newFile("d:\\javapj\\myinput");Filefile2=newFile(file1,"mysys.java");205.5文件和目錄File類的方法getName():獲得指定文件的名稱getPath()/getAbsolutePath()exists():判斷文件是否存在isFile()/isDiectory()canRead()/canWrite()lastModified()length()delete()createNewFile()mkdir()mkdirs()215.5文件和目錄例1使用File類管理文件和目錄importjava.io.*;public
classfile1{public
static
voidmain(String[]args){Filef=newFile("c:\\abc.txt");if(f.exists()){System.out.println("存在!");}else{try{f.createNewFile();System.out.println("文件已被創建!"); }catch(IOExceptione){}}}}225.5文件和目錄例2使用File類獲得文件屬性importjava.io.*;publicclassFile2{ publicstaticvoidmain(String[]args) { Filef=newFile("I:\\code\\5\\q.txt"); System.out.println(f.isFile()); System.out.println(f.getName()); System.out.println(f.getPath()); }} 235.5文件和目錄練習 在D盤上創建一個簡單的文本文件,名為dummy.txt.編寫程序,要求輸出該文件的名稱、路徑、字節數。245.6文件輸入輸出流FileInputStream類FileInputStream(Stringfilepath)FileInputStream(Filefileobj)例如,FileInputStreamf1=newFileInputStream(“C:/jdk1.4.2/bin/ex27.java”);Filef=newFile(“C:/jdk1.4.2/bin/ex27.java”);FileInputStreamf1=newFileInputStream(f);255.6文件輸入輸出流例3讀取文件內容并顯示importjava.io.*;publicclassFileIn{ publicstaticvoidmain(String[]args)throwsException { Filef=newFile("I:\\code\\5\\q.txt"); FileInputStreamfis=newFileInputStream("I:\\code\\5\\q.txt"); System.out.print("contentoftextis:"); intb; while((b=fis.read())!=-1) { System.out.print((char)b); }}}265.6文件輸入輸出流FileOutputStream類FileOutputStream(StringfilePath)FileOutputStream(FilefileObj)FileOutputStream(FilefileObj,booleanb)275.6文件輸入輸出流例4將程序結果追加至指定文件importjava.io.*;publicclassFile4{ publicstaticvoidmain(String[]args)throwsException { Filef=newFile("q.txt"); FileOutputStreamfos=newFileOutputStream(f,true); for(inti='a';i<='z';i++) { fos.write(i); } fos.close(); }}285.6文件輸入輸出流思考:如何使用FileInputStream類與FileOutputStream類復制文件295.7數據輸入輸出流DataInputStream和DataOutputStream分別實現了java.io包中的DataInput和DataOutput接口,能夠讀寫Java基本數據類型的數據和Unicode編碼格式的字符串.這樣,在輸入輸出數據時就不必關心該數據究竟包含幾個字節了. DataInputStream類和DataOutputStream類是從過濾流類繼承過來,這兩個流的對象均不能獨立地實現數據的輸入和輸出處理,必須與其他輸入流與輸出流對象一起使用,才能實現不同類型數據的讀寫.305.7數據輸入輸出流315.7數據輸入輸出流例使用DataInputStream類和DataOutputStream類讀寫格式文件.classStudent{ intsno;Stringname;intage;chargrade;booleansex; publicStudent() { this.sno=0; ="未知"; this.age=0; this.grade='C'; this.sex=true; } publicStudent(intsno,Stringname,intage,chargrade,booleansex) { if(sno>0)this.sno=sno; =name; this.age=age; this.grade=grade; this.sex=sex; }}325.7數據輸入輸出流importjava.io.*;publicclassfdsRW{ publicstaticvoidmain(String[]args) { Stringfile="student.dat"; Students1=newStudent(); Students2=newStudent(10,"張飛",16,'A',true); try { FileOutputStreamfo=newFileOutputStream(file); //創建文件輸出流對象 DataOutputStreamout=newDataOutputStream(fo); //創建數據輸出流對象 out.writeInt(s1.sno); //寫文件 out.writeUTF(); out.writeInt(s1.age); out.writeChar(s1.grade); out.writeBoolean(s1.sex);335.7數據輸入輸出流 out.writeInt(s2.sno); out.writeUTF(); out.writeInt(s2.age); out.writeChar(s2.grade); out.writeBoolean(s2.sex); out.close(); //關閉數據輸出流 fo.close(); //關閉文件輸出流 System.out.println("文件:"+file+"創建完畢!"); System.out.println("開始讀取文件內容:"); FileInputStreamfi=newFileInputStream(file); //創建文件輸入流對象 DataInputStreamin=newDataInputStream(fi); //創建數據輸入流對象345.7數據輸入輸出流 for(inti=1;i<=2;i++) {//讀取文件內容 intsno=in.readInt(); Stringsname=in.readUTF(); intage=in.readInt(); chargrade=in.readChar(); booleansex=in.readBoolean(); System.out.println(sno+"\t"+sname+"\t"+age+"\t"+grade+"\t"+sex); } in.close(); fi.close(); } catch(IOExceptione) { System.out.println(e.toString()); } }}355.8過濾流
1.過濾流:將一個過濾流連接到另一個流上,則在從原始的流讀寫數據的同時,利用過濾流可以對這些數據進行加工處理。2.DataInputStream和DataOutputStream類:它們分別為FilterInputStream和FilterOutputStream類的子類。同時DataInputStream和DataOutputStream類由于分別實現了DataInput和DataOutput接口中定義的獨立于具體機器的帶格式的讀寫操作,從而可以實現對Java中的不同類型的基本類型數據的讀寫。36importjava.io.*;publicclassJavaFile{ publicstaticvoidmain(Stringargs[]) { intX=100;floatY=3.14f; try { FileOutputStreamfos=newFileOutputStream("data.dat"); DataOutputStreamdos=newDataOutputStream(fos); dos.writeInt(X); dos.writeFloat(Y); dos.close(); } catch(FileNotFoundExceptione){ } catch(IOExceptione){ }}}帶格式的寫操作5.8過濾流37importjava.io.*;publicclassJavaFile{ publicstaticvoidmain(Stringargs[]) { intX; floatY;try{FileInputStreamfis=newFileInputStream("data.dat");DataInputStreamdis=newDataInputStream(fis); X=dis.readInt(); Y=dis.readFloat(); dis.close(); System.out.println("X="+X); Sy
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業互聯網平臺傳感器網絡自組網技術2025年技術創新與產業布局報告
- 2025年高速公路智能交通系統與智能交通指揮中心的融合分析
- 共享出行市場共享出行市場潛力與2025年行業市場趨勢報告
- 2025年電商直播中主播品牌合作模式風險識別與應對策略分析報告
- 2025年廢舊電子產品回收與資源回收行業市場潛力與競爭格局分析
- 文化產業金融政策導向下的融資渠道創新與2025年市場前景分析報告
- 工業互聯網平臺數據備份與恢復策略:工業互聯網數據備份與恢復系統性能評估
- 新型農業經營主體數字化轉型與培育策略研究報告
- 2025年電競行業商業贊助策略報告:品牌合作市場分析與策略建議
- 工業互聯網平臺自然語言處理技術2025年工業設備能耗管理應用報告
- 社區工作聯系函700字
- 供應商服務商管理辦法
- 2021譯林版高中英語選擇性必修二課文翻譯
- 外墻清洗保潔合同
- 機械原理課程設計-平臺印刷機主傳動機構設計說明書
- 天然氣管道運輸外文文獻
- 安全生產費用確認單
- 新教材 人教B版高中數學必修第四冊 第十一章 立體幾何初步 精品教學案(知識點考點匯總)
- 民法典合同編之違約責任實務解讀PPT
- (完整PPT)抽油機井示功圖分析課件
- 最新國家開放大學電大本科液壓氣動技術期末題庫及答案
評論
0/150
提交評論