![Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程課件:Java中的文件操作_第1頁](http://file4.renrendoc.com/view9/M03/1B/33/wKhkGWce026Aa4VSAABuAH4HCIM930.jpg)
![Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程課件:Java中的文件操作_第2頁](http://file4.renrendoc.com/view9/M03/1B/33/wKhkGWce026Aa4VSAABuAH4HCIM9302.jpg)
![Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程課件:Java中的文件操作_第3頁](http://file4.renrendoc.com/view9/M03/1B/33/wKhkGWce026Aa4VSAABuAH4HCIM9303.jpg)
![Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程課件:Java中的文件操作_第4頁](http://file4.renrendoc.com/view9/M03/1B/33/wKhkGWce026Aa4VSAABuAH4HCIM9304.jpg)
![Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程課件:Java中的文件操作_第5頁](http://file4.renrendoc.com/view9/M03/1B/33/wKhkGWce026Aa4VSAABuAH4HCIM9305.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java中的文件操作文件處理(File類)I/O流概述掌握J(rèn)ava流類的分類常見的字節(jié)流:InputStream、OutputStream、FileInputStream、FileOutputStream、DataInputStream、DataOutputStream、BufferedInputStream、BufferedOutputStream、System.in、System.out等字符流:Reader、Writer、InputStreamReader、OutputStreamWriter、FileReader、FileWriterCharArrayReader、CharArrayWriter、BufferedReader、BufferedWriter對象流:ObjectInputStream、ObjectOutputStream。本講目標(biāo)3文件處理
I/O處理中,最常見的是對文件的操作,java.io包中有關(guān)文件處理的類有: File、FileInputStream、FileOutputStream。這里先講解File。4文件處理文件描述
類java.io.File提供了一種與機(jī)器無關(guān)的方式來描述一個(gè)文件對象的屬性;代表系統(tǒng)文件或者系統(tǒng)路徑的抽象類。File類的常見構(gòu)造方法:publicFile(Stringpath)注意:如果path是實(shí)際存在的路徑,則該File對象表示的是目錄;如果path是文件名,則該File對象表示的是文件。publicFile(Stringpath,Stringname)注意:path是路徑名,name是文件名publicFile(Filedir,Stringname)注意:dir是路徑名,name是文件名5文件處理文件描述文件或目錄的生成: StringgetName();//得到一個(gè)文件的名稱(不包括路徑) StringgetPath();//得到一個(gè)文件的路徑名 StringgetAbsolutePath();//得到一個(gè)文件的絕對路徑名 StringgetParent();//得到一個(gè)文件的上一級目錄名 StringrenameTo(FilenewName);//將當(dāng)前文件名更名為給定文件的完整路徑6文件處理文件描述文件屬性測試booleanexists();//測試當(dāng)前File對象所指的文件是否存在booleancanWrite();//測試當(dāng)前文件是否可寫booleancanRead();//測試當(dāng)前文件是否可讀booleanisFile();//測試當(dāng)前文件是否是文件(不是目錄)booleanisDirectory();//測試當(dāng)前文件是否是目錄7文件處理文件描述普通文件信息和方法longlastModified();//得到文件最近一次修改的時(shí)間longlength();//得到文件的長度,以字節(jié)為單位booleandelete();//刪除當(dāng)前文件目錄操作 booleanmkdir();//根據(jù)當(dāng)前對象生成一個(gè)由該對象指定的路徑 Stringlist();//列出當(dāng)前目錄下的文件
8
一、如果某文件如E:\doc\測試文件.txt存在,則刪除該文件,如果不存在則創(chuàng)建,并顯示該文件的相關(guān)信息(文件名,絕對路徑,讀寫權(quán)限)9I/O流概述--Java流式輸入/輸出原理注意:輸入/輸出處理是程序設(shè)計(jì)中非常重要的一部分,比如從鍵盤讀 取數(shù)據(jù)、從文件中讀取數(shù)據(jù)或向文件中寫數(shù)據(jù)等等。
在Java程序中,對于數(shù)據(jù)的輸入/輸出操作以“流”(stream)方式進(jìn)行;J2SDK提供了各種各樣的“流”類,用以獲取不同種類的數(shù)據(jù);程序中通過標(biāo)準(zhǔn)的方法輸入或輸出數(shù)據(jù)。文件00101………程序文件………00101程序網(wǎng)路連接程序0010111………程序程序010…010…文件010…程序“hello”10I/O流概述--流是一個(gè)很形象的概念圖示:11輸入輸出流分類
java.io包中定義了多個(gè)流類型(類或抽象類)來實(shí)現(xiàn)輸入/輸出功能,可以從不同的角度對其進(jìn)行分類:
按數(shù)據(jù)流的方向不同可以分為輸入流和輸出流。(以程序的角度來考慮)按處理數(shù)據(jù)單位不同可以分為字節(jié)流和字符流。按照功能不同可以分為節(jié)點(diǎn)流和處理流。J2SDK所提供的所有流類型位于包java.io內(nèi)都分別繼承自以下四種抽象流類型。字節(jié)流字符流輸入流InputStreamReader輸出流OutputStreamWriter12輸入輸出流分類節(jié)點(diǎn)流:為可以從一個(gè)特定的數(shù)據(jù)源(節(jié)點(diǎn))讀寫數(shù)據(jù)(如:文件,內(nèi)存)數(shù)據(jù)源程序處理流:是“連接”在已存在的流(節(jié)點(diǎn)流或處理流)之上,通過對數(shù)據(jù)的處理為程序提供更為強(qiáng)大的讀寫功能。節(jié)點(diǎn)流數(shù)據(jù)源數(shù)據(jù)源程序程序13字節(jié)流概念及圖示:
從InputStream和OutputStream派生出來的一系列類。這類流以字節(jié)(byte:8bit)為基本處理單位。下圖中深色為節(jié)點(diǎn)流,淺色為處理流。14字節(jié)流概念及圖示(續(xù)):15字節(jié)流--InputStream和OutputStreamInputStream和OutputStreamInputStream從流中讀取數(shù)據(jù):read();//讀取一個(gè)字節(jié),返回值為所讀的字節(jié)intread(byteb[]);//讀取多個(gè)字節(jié),放置到字節(jié)數(shù)組b中,通常讀取的字節(jié)數(shù)量為b的長度,返回值為實(shí)際讀取的字節(jié)的數(shù)量intavailable();//返回值為流中尚未讀取的字節(jié)的數(shù)量關(guān)閉流:close();//流操作完畢后必須關(guān)閉16字節(jié)流--InputStream和OutputStreamInputStream和OutputStreamOutputStream輸出數(shù)據(jù): voidwrite(intb);//往流中寫一個(gè)字節(jié)b voidwrite(byteb[]);//往流中寫一個(gè)字節(jié)數(shù)組b voidwrite(byteb[],intoff,intlen);//把字節(jié)數(shù)組b中從下標(biāo)off開始,長度為len的字節(jié)寫入流中flush()//刷空輸出流,并輸出所有被緩存的字節(jié) 由于某些流支持緩存功能,該方法將把緩存中所有內(nèi)容強(qiáng)制輸出到流中。關(guān)閉流:close();//流操作完畢后必須關(guān)閉
17字節(jié)流I/O中的異常 進(jìn)行I/O操作時(shí)可能會產(chǎn)生I/O異常,屬于非運(yùn)行時(shí)異常,應(yīng)該在程序中處理。如:FileNotFoundException,EOFException,IOException
18字節(jié)流--FileInputSteam和FileOutputSteam
FileInputStream和FileOutputStream用來進(jìn)行文件I/O處理,由它們所提供的方法可以打開本地主機(jī)上的文件,并進(jìn)行順序的讀/寫。
從鍵盤接收一行數(shù)據(jù),寫到一個(gè)文件中
從一個(gè)文件中讀出,然后寫入另一個(gè)文件。19BufferedInputStream和BufferedOutputStream緩沖流用于提高輸入/輸出處理的效率。字節(jié)流--BufferedInputStream和BufferedOutputStream
利用緩沖流從一個(gè)文件中讀出,然后寫入另一個(gè)文件。20DataInputStream和DataOutputStream
不僅能讀/寫數(shù)據(jù)流,而且能讀/寫各種的java語言的基本類型,如:boolean,int,float等。字節(jié)流--DataInputStream和DataOutputStream
應(yīng)用DataInputStream和DataOutputStream,編寫一個(gè)boolean,int型的數(shù)據(jù),寫入文件21PrintStream 在整個(gè)IO包中,打印流是輸出信息最方便的類,主要包含字節(jié)打印流(PrintStream)和字符打印流(PrintWriter).打印流提供了非常方便的打印功能,可以打印任何的數(shù)據(jù)類型,例如:小數(shù)、整數(shù)、字符串等等。 System.out和System.err都是java.io.PrintStream類的實(shí)例。PrintStream不限于控制臺打印。PrintStream是一個(gè)處理流,可以連接在任何其他流上。字節(jié)流--PrintStream
22
1、通過打印流向文件中寫信息。
2、從鍵盤上接收信息,然后在控制臺上輸出。字節(jié)流--PrintStream
23字符流概述: 從Reader和Writer派生出的一系列類,這類流以16位的Unicode碼表示的字符為基本處理單位。
24字符流25字符流java中提供了處理以16位的Unicode碼表示的字符流的類,即以Reader和Writer為基類派生出的一系列類。Reader類是處理所有字符流輸入類的父類。Writer類是處理所有字符流輸出類的父類。 這兩個(gè)類是抽象類,只是提供了一系列用于字符流處理的接口,不能生成這兩個(gè)類的實(shí)例,只能通過使用由它們派生出來的子類對象來處理字符流。26字符流Reader類是處理所有字符流輸入類的父類。讀取字符publicintread()throwsIOException;//讀取一個(gè)字符,返回值為讀取的字符publicintread(charcbuf[])throwsIOException;/*讀取一系列字符到數(shù)組cbuf[]中,返回值為實(shí)際讀取的字符的數(shù)量*/publicabstractintread(charcbuf[],intoff,intlen)throwsIOException; /*讀取len個(gè)字符,從數(shù)組cbuf[]的下標(biāo)off處開始存放,返回值為實(shí)際讀取的字符數(shù)量,該方法必須由子類實(shí)現(xiàn)*/27字符流Reader類是處理所有字符流輸入類的父類。關(guān)閉流publicabstractvoidclose()throwsIOException;28字符流Writer類是處理所有字符流輸出類的父類。向輸出流寫入字符publicvoidwrite(intc)throwsIOException; //將整型值c的低16位寫入輸出流。publicvoidwrite(charcbuf[])throwsIOException; //將字符數(shù)組cbuf[]寫入輸出流publicabstractvoidwrite(charcbuf[],intoff,intlen)throwsIOException; /*將字符數(shù)組cbuf[]中的從索引為off的位置處開始的len個(gè)字符寫入輸出流*/
29字符流Writer類是處理所有字符流輸出類的父類。向輸出流寫入字符publicvoidwrite(Stringstr)throwsIOException;//將字符串str中的字符寫入輸出流publicvoidwrite(Stringstr,intoff,intlen)throwsIOException; //將字符串str中從索引off開始處的len個(gè)字符寫入輸出流flush()//刷空輸出流,并輸出所有被緩存的字符。
30字符流Writer類是處理所有字符流輸出類的父類。向輸出流寫入字符publicvoidwrite(Stringstr)throwsIOException;//將字符串str中的字符寫入輸出流publicvoidwrite(Stringstr,intoff,intlen)throwsIOException; //將字符串str中從索引off開始處的len個(gè)字符寫入輸出流flush()//刷空輸出流,并輸出所有被緩存的字符。
31字符流--FileReader和FileWriter1、完成文件的復(fù)制2、從鍵盤接收一行數(shù)據(jù),寫到一個(gè)文件中32字符流--BufferedReader和BufferedWriterBufferedReader和BufferedWriter生成流對象publicBufferedReader(Readerin);//使用缺省的緩沖區(qū)大小publicBufferedReader(Readerin,intsz);//sz為緩沖區(qū)的大小publicBufferedWriter(Writerout);publicBufferedWriter(Writerout,intsz);33字符流--BufferedReader和BufferedWriterBufferedReader和BufferedWriter
BufferedReader是從字符輸入流中讀取文本,緩沖各個(gè)字符,提高了字符、數(shù)組和行的高效讀取。讀入/寫出字符除了Reader和Writer中提供的基本的讀寫方法外,增加對整行字符的處理。publicStringreadLine()throwsIOException;//讀一行字符publicvoidnewLine()throwsIOException;//寫一行字符34字符流--BufferedReader和BufferedWriter1、完成文件的讀?。ò葱凶x?。┪募?nèi)容“你好嗎”,“我很好””你呢”,“我也很好”(使用BufferedReader/BufferedWriter)35對象流ObjectOutputStream/ObjectInputStream
ObjectInputStream對以前使用ObjectOutputStream寫入的基本數(shù)據(jù)和對象進(jìn)行反序列化。ObjectOutputStream和ObjectInputStream分別與FileOutputStream和FileInputStream一起使用時(shí),可以為應(yīng)用程序提供對對象圖形的持久性存儲。36對象的序列化(Serialization)序列化的定義什么是序列化
對象的壽命通常隨著生成該對象的程序的終止而終止。有時(shí)候,可能需要將對象的狀態(tài)保存下來,在需要時(shí)再將對象恢復(fù)。我們把對象的這種能記錄自己的狀態(tài)以便將來再生的能力,叫做對象的持續(xù)性(persistence)。對象通過寫出描述自己狀態(tài)的數(shù)值來記錄自己,這個(gè)過程叫對象的序列化(Serialization)。
37對象的序列化(Serialization)序列化的定義
序列化的目的序列化的目的是為java的運(yùn)行環(huán)境提供一組特性,其主要任務(wù)是寫出對象實(shí)例變量的數(shù)值。
38對象的序列化(Serialization)序列化方法在java.io包中,接口Serializable用來作為實(shí)現(xiàn)對象串行化的工具,只有實(shí)現(xiàn)了Serializable的類的對象才可以被串行化。定義一個(gè)可序列化對象39對象的序列化(Serialization)publicclassStudentimplementsSerializable{intid;//學(xué)號Stringname;//姓名intage;//年齡Stringdepartment//系別publicStudent(intid,Stringname,intage,Stringdepartment){this.id=id;=name;this.age=age;this.department=department;}}40對象的序列化(Serialization)構(gòu)造對象的輸入/輸出流 要序列化一個(gè)對象,必須與一定的對象輸入/輸出流聯(lián)系起來,通過對象輸出流將對象狀態(tài)保存下來,再通過對象輸入流將對象狀態(tài)恢復(fù)。 java.io包中,提供了ObjectInput
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)生產(chǎn)項(xiàng)目管理與風(fēng)險(xiǎn)控制作業(yè)指導(dǎo)書
- 營銷人的選書與讀書
- 2025年延邊貨運(yùn)從業(yè)資格證考試題庫答案
- 小學(xué)三年級上冊數(shù)學(xué)口算題100題
- 小學(xué)二年級數(shù)學(xué)下學(xué)期口算練習(xí)
- 2025年湖北交通運(yùn)輸從業(yè)資格證怎樣考試
- 2025年昆明貨運(yùn)從業(yè)資格考試技巧
- 電力行業(yè)合作協(xié)議(2篇)
- 湘教版數(shù)學(xué)八年級上冊1.2《分式的乘方》聽評課記錄2
- 2024-2025學(xué)年新教材高中歷史第一單元從中華文明起源到秦漢統(tǒng)一多民族封建國家的建立與鞏固單元優(yōu)化提升鏈接學(xué)考含解析新人教版必修中外歷史綱要上
- 2024-2025年中國專網(wǎng)通信行業(yè)市場前景預(yù)測及投資戰(zhàn)略研究報(bào)告
- 北京市豐臺區(qū)2024-2025學(xué)年九年級上學(xué)期期末語文試題(含答案)
- 二零二五年度能源行業(yè)員工勞動合同標(biāo)準(zhǔn)范本3篇
- 計(jì)劃供貨時(shí)間方案
- 2024年石柱土家族自治縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 西藏事業(yè)單位c類歷年真題
- 2024人教新目標(biāo)(Go for it)八年級英語下冊【第1-10單元】全冊 知識點(diǎn)總結(jié)
- 2025中國移動安徽分公司春季社會招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 七年級英語下學(xué)期開學(xué)考試(深圳專用)-2022-2023學(xué)年七年級英語下冊單元重難點(diǎn)易錯題精練(牛津深圳版)
- 2025江蘇省全日制勞動合同書范本
- 杭州市房地產(chǎn)經(jīng)紀(jì)服務(wù)合同
評論
0/150
提交評論