版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
程序設(shè)計(jì)方法
-----第九講文件操作
2018-12-20課件9:2第九講輸入輸出流學(xué)習(xí)目標(biāo):了解Java中流的概念,流的分類。掌握文件輸入/輸出流(FileInputStream和FileOutputStream)掌握FileReader類和FileWriter類掌握使用File類對(duì)進(jìn)行文件操作的方法學(xué)會(huì)使用RandornAccessFile類隨機(jī)訪問文件了解對(duì)象流概念了解序列化和對(duì)象克隆課件9:39.1輸入輸出流基礎(chǔ)流的概念大多數(shù)應(yīng)用程序都需要與外部設(shè)備進(jìn)行數(shù)據(jù)交換,最常見的外部設(shè)備包含磁盤,網(wǎng)絡(luò),鍵盤和顯示器等。IO就是指應(yīng)用程序?qū)@些設(shè)備的數(shù)據(jù)輸入和輸出。是指同一臺(tái)計(jì)算機(jī)或網(wǎng)絡(luò)中不同計(jì)算機(jī)之間有序運(yùn)動(dòng)著的數(shù)據(jù)序列。在Java中,我們將這些輸入輸出的數(shù)據(jù)都看作數(shù)據(jù)流。即一串連續(xù)不斷的數(shù)據(jù)的集合,就像水管里的水流。是程序和外界進(jìn)行數(shù)據(jù)交換的通道。數(shù)據(jù)流是所有數(shù)據(jù)通信通道之中數(shù)據(jù)的起點(diǎn)和終點(diǎn)。課件9:49.1輸入輸出流基礎(chǔ)流的分類按功能劃分:輸入流:表示從外部設(shè)備到計(jì)算機(jī)的數(shù)據(jù)流動(dòng)。輸出流:表示從計(jì)算機(jī)到外部設(shè)備的數(shù)據(jù)流動(dòng)。輸出流輸入流注意:輸入和輸出是相對(duì)于應(yīng)用程序而言的。如果我們要將文件A的內(nèi)容寫入文件B,那么要讀取文件A的內(nèi)容和寫入文件B時(shí),我們分別需要建立什么流?課件9:59.1輸入輸出流基礎(chǔ)流的分類按功能劃分:輸入流:表示從外部設(shè)備到計(jì)算機(jī)的數(shù)據(jù)流動(dòng)。輸出流:表示從計(jì)算機(jī)到外部設(shè)備的數(shù)據(jù)流動(dòng)。課件9:69.1輸入輸出流基礎(chǔ)流的分類按流中的數(shù)據(jù)類型劃分:字節(jié)流:以字節(jié)為傳輸單位。字符流:以字符為傳輸單位,特別用于文本數(shù)據(jù)。按建立方式和工作原理劃分:節(jié)點(diǎn)流:程序與輸入源或輸出宿之間直接建立的流過濾流:以某一個(gè)節(jié)點(diǎn)流作為流的來源,并對(duì)其進(jìn)行一些加工處理的流。能有效改善輸入/輸出操作。課件9:79.1輸入輸出流基礎(chǔ)基本流的類字節(jié)流輸入字節(jié)流:InputStream輸出字節(jié)流:OutputStream字符流輸入字符流:Reader輸出字符流:Writer以上四個(gè)基本流類都是抽象類,只是為具體其子類規(guī)定要實(shí)現(xiàn)的方法。由其具體子類負(fù)責(zé)創(chuàng)建與各種數(shù)據(jù)源或數(shù)據(jù)宿的數(shù)據(jù)流。課件9:89.2File類File類概述是專門用來管理磁盤文件和目錄的。每個(gè)File類的對(duì)象表示一個(gè)磁盤文件或目錄,其對(duì)象屬性中包含了文件或目錄的相關(guān)信息。如文件或目錄的名稱、文件的長(zhǎng)度、目錄中所含文件的個(gè)數(shù)等為處理字節(jié)的輸入/輸出提供了便利方法調(diào)用File類的方法則可以完成對(duì)文件或目錄的常用管理操作。如創(chuàng)建文件或目錄、刪除文件或目錄、查看文件的有關(guān)信息等。課件9:99.2File類File類的構(gòu)造方法publicFile(Stringpathname):創(chuàng)建一個(gè)對(duì)應(yīng)于參數(shù)pathname的File類對(duì)象。參數(shù)pathname是包含目錄和文件名的字符串。如果沒有文件名,則代表目錄。例如:
Filefile1=newFile("d:\\javapj\\myinput"); Filefile2=newFile("d:\\javapj\\myinput\\mysys.java");課件9:109.2File類File類的構(gòu)造方法publicFile(Stringparent,Stringchild):該構(gòu)造函數(shù)將pathname分成兩部分parent和child,參數(shù)parent表示目錄或文件所在路徑,參數(shù)child表示目錄或文件名稱。例如: Filefile1=newFile("d:\\javapj","myinput"); Filefile2=newFile("d:\\javapj\\myinput","mysys.java");課件9:119.2File類File類的構(gòu)造方法publicFile(Fileparent,Stringchild):該構(gòu)造函數(shù)與上面一個(gè)的不同之處,在于將parent的參數(shù)類型由String變?yōu)镕ile,代表parent是一個(gè)已經(jīng)創(chuàng)建了的File類文件對(duì)象(指向目錄)。例如: Filefile1=newFile("d:\\javapj\\myinput"); Filefile2=newFile(file1,"mysys.java");課件9:129.2File類File類的常用方法publicbooleancanWrite():返回文件是否可寫。publicbooleancanRead():返回文件是否可讀。publicbooleancreateNewFile():當(dāng)文件不存在時(shí)創(chuàng)建文件。publicbooleandelete():從文件系統(tǒng)內(nèi)刪除該文件。publicvoiddeleteOnExit():程序順利結(jié)束時(shí)從系統(tǒng)中刪除文件。publicbooleanexists():判斷文件是否存在。publicFilegetAbsoluteFile():以File類對(duì)象形式返回文件的絕對(duì)
路徑。publicStringgetAbsolutePath():以字符串形式返回文件的絕對(duì)路
徑。publicStringgetName():以字符串形式返回文件名稱。課件9:139.2File類File類的常用方法publicStringgetParent():以字符串形式返回文件父目錄路徑。publicStringgetPath():以字符串形式返回文件的相對(duì)路徑。publicFilegetParentFile():以File類對(duì)象形式返回文件父目錄的
路徑。publicbooleaisFile():判斷該File對(duì)象所對(duì)應(yīng)的是否是文件。publiclonglastModified():返回文件的最后修改時(shí)間。publicintlength():返回文件長(zhǎng)度。publicbooleanmkdir():在當(dāng)前目錄下生成指定的目錄。publicbooleansetReadOnly():將文件設(shè)置為只讀。publicStringtoString():將文件對(duì)象的路徑轉(zhuǎn)換為字符串返回。課件9:149.2File類對(duì)文件的操作按以下步驟進(jìn)行:創(chuàng)建文件輸入/輸出對(duì)象。打開文件。用文件讀/寫方式讀取數(shù)據(jù)。關(guān)閉數(shù)據(jù)流。課件9:159.3文件輸入/輸出流從文件輸入/輸出流中讀/寫數(shù)據(jù)有兩種方式:一是直接利用FileInputStream和FileOutputStream自身的讀/寫功能;二是以FileInputStream和FileOutputStream為原始數(shù)據(jù)源,再套接上其他功能較強(qiáng)大的輸入/輸出流完成文件的讀/寫操作。一般多采用第二種方式。課件9:169.3文件輸入/輸出流文件字節(jié)流包含F(xiàn)ileInputStream和FileOutputStream類;FileInputStream類是用于讀取文件中字節(jié)數(shù)據(jù)的字節(jié)文件輸入流類。用于順序訪問本地文件。它從超類InputStream中繼承了read、close等方法對(duì)本機(jī)上的文件進(jìn)行操作,但不支持mark方法和reset方法。FileOutputStream類是用于將字節(jié)流信息寫入指定文件的。它從其超類OutputStream中繼承了write、close等方法。課件9:179.3文件輸入/輸出流FileInputStream類的構(gòu)造方法FileInputStream(Stringname)使用指定的字符串創(chuàng)建一個(gè)FileInputStream對(duì)象。FileInputStream(Filefile)使用指定的文件對(duì)象創(chuàng)建一個(gè)FileInputStream對(duì)象。FileInputStream(FileDescriptorfd)使用指定的文件描述符創(chuàng)建一個(gè)FileInputStream對(duì)象。課件9:189.3文件輸入/輸出流FileInputStream類的常用成員方法read():自輸入流中讀取一個(gè)字節(jié)。read(byteb[]):將輸入數(shù)據(jù)存放在指定的字節(jié)數(shù)組b中。read(byteb[],intoffset,intlen):自輸入流中的offset位置開始讀取len個(gè)字節(jié)并存放在指定的數(shù)組b中。available():返回輸入流中的可用字節(jié)個(gè)數(shù)。skip(longn):從輸入流中跳過n個(gè)字節(jié)。課件9:199.3文件輸入/輸出流FileOutputStream類的構(gòu)造方法FileOutputStream(Stringname)使用指定的字符串創(chuàng)建一個(gè)FileOutputStream對(duì)象。FileOutputStream(Filefile)使用指定的文件對(duì)象創(chuàng)建一個(gè)FileOutputStream對(duì)象。FileOutputStream(FileDescriptorfd)使用指定的文件描述符創(chuàng)建一個(gè)FileOutputStream對(duì)象課件9:209.3文件輸入/輸出流FileOutputStream類的常用成員方法write(intb):將指定字節(jié)寫入此文件輸出流。write(byteb[]):將b.length個(gè)字節(jié)從指定字節(jié)數(shù)組寫
入文件輸出流中write(byteb[],intoffset,intlen):將指定字節(jié)數(shù)組中從偏移量off開始的len個(gè)字節(jié)寫入此文件輸出流。close():關(guān)閉此文件輸出流并釋放與此流有關(guān)的所有系統(tǒng)資源。如果沒有關(guān)閉那些被打開的流,那么就可能不允許另一個(gè)程序操作這些流所用的資源。課件9:219.4字符文件讀寫概述Java中的字符是Unicode編碼,是雙字節(jié),而InputStream和OutputStream是用來處理單字節(jié)的,在處理字符文本時(shí)不太方便,Java就為字符文本的輸入輸出專門提供了一套單獨(dú)的類。Reader、Writer與InputStream、OutputStream相對(duì)應(yīng),也是兩個(gè)抽象類。文件字符流包括FileReader類和FileWriter類。FileReader類:用于讀取文件字符數(shù)據(jù)。FileWriter類:用于向文件寫入字符數(shù)據(jù)。FileReader類和FileWriter類這兩個(gè)類沒有自己獨(dú)特的成員方法,它們的成員方法都直接繼承自父類。課件9:229.4字符文件讀寫FileReader類構(gòu)造方法FileReader(StringfileName)使用指定的文件名創(chuàng)建一個(gè)FileReader對(duì)象。FileReader(Filefile)使用指定的文件對(duì)象創(chuàng)建一個(gè)FileReader對(duì)象。FileReader(FileDescriptorfd)使用指定的文件描述符創(chuàng)建一個(gè)FileReader對(duì)象。課件9:239.4字符文件讀寫FileWriter類構(gòu)造方法FileWriter(StringfileName)使用指定的文件名創(chuàng)建一個(gè)FileWriter對(duì)象。FileWriter(Filefile)使用指定的文件對(duì)象創(chuàng)建一個(gè)FileWriter對(duì)象。FileWriter(FileDescriptorfd)使用指定的文件描述符創(chuàng)建一個(gè)FileWriter對(duì)象。課件9:249.5RandomAccessFile(隨機(jī)訪問文件)類概述InputStream/OutputStream、Reader/Writer類來說,它們都是順序訪問流,只能進(jìn)行順序讀寫。RandomAccessFile類實(shí)現(xiàn)對(duì)文件的隨機(jī)讀/寫操作。RandomAccessFile實(shí)現(xiàn)了DataInput和DataOutput接口。RandomAccessFile類提供了定位文件的方法課件9:259.5RandomAccessFile(隨機(jī)訪問文件)類RandomAccessFile類的構(gòu)造方法RandomAccessFile(Filefile,Stringmode)使用指定的文件對(duì)象和存取模式創(chuàng)建其類對(duì)象。RandomAccessFile(Stringname,Stringmode)使用指定字符串和存取模式創(chuàng)建其類對(duì)象。存取模式:r代表以只讀方式打開文件;rw代表以讀/寫方式打開文件。課件9:269.5RandomAccessFile(隨機(jī)訪問文件)類RandomAccessFile類的常用方法方法名功能描述longgetFilePointer()返回當(dāng)前文件指針longlength()返回文件長(zhǎng)度booleanreadBoolean()讀入一個(gè)布爾值intreadInt()讀入一個(gè)整數(shù)stringreadLine()讀入一行字符串voidseek(longpos)文件指針移到指定位置intskipBytes(intn)文件指針向前移n個(gè)字節(jié)voidwrite(byteb[])把數(shù)組內(nèi)容寫入文件voidwriteBoolean(booleanv)寫入一個(gè)布爾值voidwriteInt(intv)寫入一個(gè)整數(shù)課件9:279.5RandomAccessFile(隨機(jī)訪問文件)類RandomAccessFile類案例importjava.io.*;publicclassRandomTester{publicstaticvoidmain(Stringargs[])throwsIOException{RandomAccessFilerf=newRandomAccessFile("D:\\test.dat","rw");for(inti=0;i<10;i++)rf.writeLong(i*1000);rf.seek(5*8);//從文件開頭開始,跳過第5個(gè)long數(shù)據(jù),接下來寫第6個(gè)long數(shù)據(jù)
rf.writeLong(1234);rf.seek(0);//把讀寫指針定位到文件開頭
for(inti=0;i<10;i++)System.out.println("Value"+i+":"+rf.readLong());rf.close();}Value0:0Value1:1000Value2:2000Value3:3000Value4:4000Value5:1234Value6:6000Value7:7000Value8:8000Value9:9000課件9:289.5RandomAccessFile(隨機(jī)訪問文件)類RandomAccessFile類案例(隨機(jī)讀取文件中的字符信息。)importjava.io.*;publicclassReadtext{ publicstaticvoidmain(String[]args) { Stringstr1; charch1; intn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年股東致行動(dòng)協(xié)議與旅游產(chǎn)業(yè)融合發(fā)展合同
- 2025年度新能源項(xiàng)目股權(quán)投資顧問服務(wù)協(xié)議
- 二零二五年度藝人經(jīng)紀(jì)合同違約金賠償條件確認(rèn)
- 2025年度管道保溫工程安全風(fēng)險(xiǎn)評(píng)估合同
- 2025年度離婚協(xié)議書電子版在線爭(zhēng)議解決合同
- 2025年度影視作品知識(shí)產(chǎn)權(quán)歸屬及收益分成合同
- 2025年度特殊用途煤場(chǎng)租賃合同書
- 2025年度茶樓品牌推廣及廣告投放合同
- 二零二五年度跨國(guó)公司員工派遣合同模板:全球人力資源配置服務(wù)協(xié)議
- 2025年度大型活動(dòng)策劃公司項(xiàng)目負(fù)責(zé)人聘用合同模板
- 2014新PEP小學(xué)英語六年級(jí)上冊(cè)-Unit5-What-does-he-do復(fù)習(xí)課件
- 9.2溶解度(第1課時(shí)飽和溶液不飽和溶液)+教學(xué)設(shè)計(jì)-2024-2025學(xué)年九年級(jí)化學(xué)人教版(2024)下冊(cè)
- 礦山隱蔽致災(zāi)普查治理報(bào)告
- 副總經(jīng)理招聘面試題與參考回答(某大型國(guó)企)2024年
- PDCA循環(huán)提高護(hù)士培訓(xùn)率
- 《獅子王》電影賞析
- 河北省保定市定州市2025屆高二數(shù)學(xué)第一學(xué)期期末監(jiān)測(cè)試題含解析
- 中醫(yī)護(hù)理人文
- 2024-2030年中國(guó)路亞用品市場(chǎng)銷售模式與競(jìng)爭(zhēng)前景分析報(bào)告
- 貨物運(yùn)輸安全培訓(xùn)課件
- 前端年終述職報(bào)告
評(píng)論
0/150
提交評(píng)論