版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
JAVA核心邏輯
第十三章:文件與I/O流
目錄File類的使用I/O分類
字節(jié)流
字符流
對象序列化文件
什么是文件文件可認(rèn)為是相關(guān)記錄或放在一起的數(shù)據(jù)的集合
文件存儲位置JAVA程序如何訪問文件屬性JAVAAPI:java.io.File類File類java.io.File類代表硬盤上的一個文件或者文件夾java中文件路徑的表示方式Windows中表示c:\suns.txtJava中表示c:\\suns.txtc:/sun.txtFile類File類的構(gòu)造方法File類沒有無參構(gòu)造方法File(Stringpathname)File(Stringparent,Stringchild)File(Fileparent,Stringchild)File類File類的常用方法createNewFile()mkdir()/mkdirs()delete()deleteOnExit()exists()isFile()isDirectory()方法名稱說明booleanexists()判斷文件或目錄是否存在booleanisFile()判斷是否是文件booleanisDirectory()判斷是否是目錄StringgetPath()返回此對象表示的文件的相對路徑名StringgetAbsolutePath()返回此對象表示的文件的絕對路徑名StringgetName()返回此對象表示的文件或目錄的名稱booleandelete()刪除此對象指定的文件或目錄booleancreateNewFile()創(chuàng)建名稱的空文件,不創(chuàng)建文件夾longlength()返回文件的長度,單位為字節(jié),如果文件不存在,則返回0L文件練習(xí)需求說明實(shí)現(xiàn)查看文件屬性、創(chuàng)建和刪除文件文件屬性包括:文件的絕對路徑、文件名稱、文件字節(jié)數(shù)I/OI/O概念通過流來讀寫文件流是指一連串流動的字符,是以先進(jìn)先出方式發(fā)送信息的通道InputStreamOutputStream來自數(shù)據(jù)源的數(shù)據(jù)流流向目的地的數(shù)據(jù)流AECDBFI/O輸入/輸出流與數(shù)據(jù)源I/OI/O流的分類輸入流輸出流字節(jié)流字符流節(jié)點(diǎn)流過濾流字節(jié)流是8位通用字節(jié)流,字符流是
16
位
Unicode
字符流輸入輸出流是相對于計算機(jī)內(nèi)存來說的字節(jié)流
字節(jié)流的概念傳輸?shù)臄?shù)據(jù)單位是字節(jié),也意味著字節(jié)流能夠處理任何一種文件
字節(jié)流的組成InputStreamOutputStreamFileInputStream字節(jié)輸入流InputStream類常用方法intread()intread(byte[]b)intread(byte[]b,intoff,intlen)voidclose()intavailable()子類FileInputStream常用的構(gòu)造方法
FileInputStream(Filefile)FileInputStream(Stringname)FileInputStream字節(jié)輸入流使用FileInputStream
讀文本文件引入相關(guān)的類構(gòu)造文件輸入流FileInputStream對象讀取文本文件的數(shù)據(jù)關(guān)閉文件流對象importjava.io.IOException;importjava.io.FileInputStream;FileInputStreamfis=newFileInputStream(“c:\\test.txt");fis.available();fis.read();fis.close();FileInputStream字節(jié)輸入流intread()FileInputStream字節(jié)輸入流intread(byte[]bs)OutputStreamStream字節(jié)輸出流OutputStream類常用方法voidwrite(intc)voidwrite(byte[]buf)voidwrite(byte[]b,intoff,intlen)voidclose()子類FileOutputStream常用的構(gòu)造方法FileOutputStream(Filefile)FileOutputStream(Stringname) FileOutputStream(Stringname,booleanappend)1、前兩種構(gòu)造方法在向文件寫數(shù)據(jù)時將覆蓋文件中原有的內(nèi)容2、創(chuàng)建FileOutputStream實(shí)例時,如果相應(yīng)的文件并不存在,則會自動創(chuàng)建一個空的文件FileOutputStream字節(jié)輸入流使用FileOutputStream
寫文本文件引入相關(guān)的類構(gòu)造文件輸出流FileOutputStream對象關(guān)閉文件流對象importjava.io.IOException;importjava.io.FileOutputStream;("c:\\test.txt");Stringstr="好好學(xué)習(xí)Java";byte[]words=str.getBytes();fos.write(words,0,words.length);
fos.close();FileOutputStreamFileOutputStreamfos=new把數(shù)據(jù)寫入文本文件輸出流FileOutputStream17/44FileOutputStream字節(jié)輸出流
FileOutputStream(Stringpath)FileOutputStream字節(jié)輸出流FileOutputStream(Stringpath,booleanappend)FileOutputStream(Filefile,booleanappend)讀寫文件練習(xí)需求說明文件“我的青春誰做主.txt”位于D盤根目錄下,要求將此文件的內(nèi)容復(fù)制到C:\myFile\myPrime.txt中實(shí)現(xiàn)思路1.創(chuàng)建文件“D:\我的青春誰做主.txt”并自行輸入內(nèi)容2.創(chuàng)建C:\myFile的目錄。3.創(chuàng)建輸入流FileInputStream對象,負(fù)責(zé)對D:\我的青春誰做主.txt文件的讀取。4.創(chuàng)建輸出流FileOutputStream對象,負(fù)責(zé)將文件內(nèi)容寫入到C:\myFile\myPrime.txt中。5.創(chuàng)建中轉(zhuǎn)站數(shù)組words,存放每次讀取的內(nèi)容。6.通過循環(huán)實(shí)現(xiàn)文件讀寫。7.關(guān)閉輸入流、輸出流過濾流過濾流過濾流并沒有改變實(shí)際的讀寫行為,只是擴(kuò)展了進(jìn)一步處理數(shù)據(jù)的功能,其構(gòu)造必須使用一個已經(jīng)存在的輸入流/輸出流,并用它進(jìn)行實(shí)際的讀寫。DataStreamDataInputStreamDataOutputStreamBufferedStreamBufferedInputStreamBufferedOutputStream過濾流DataInputStreamFileInputStream的子類與FileInputStream類結(jié)合使用讀取按照與平臺無關(guān)的方式從流中讀取基本類型(int、char和long等)的數(shù)據(jù)readXxx();DataOutputStreamFileOutputStream的子類與FileOutputStream類結(jié)合使用向流中寫基本類型的數(shù)據(jù)writeXxx();過濾流DataInputStream讀取數(shù)據(jù)的步驟引入相關(guān)的類構(gòu)造數(shù)據(jù)輸入流對象調(diào)用read()方法讀取二進(jìn)制數(shù)據(jù)關(guān)閉數(shù)據(jù)輸入流importjava.io.FileInputStream;importjava.io.DataInputStream;FileInputStreamfis=newFileInputStream("C:\\HelloWorld.class");DataInputStreamdis=newDataInputStream(fis);dis.read();dis.close();與字節(jié)流FileInputStream類實(shí)現(xiàn)文本文件讀取步驟極其相似過濾流DataInputStream讀取數(shù)據(jù)過濾流DataOutputStream寫數(shù)據(jù)的步驟引入相關(guān)的類構(gòu)造數(shù)據(jù)輸出流對象調(diào)用write()方法寫二進(jìn)制文件的數(shù)據(jù)關(guān)閉數(shù)據(jù)輸出流importjava.io.FileOutputStream;importjava.io.DataOutputStream;FileOutputStreamoutFile=newFileOutputStream("C:\\temp.class");DataOutputStreamout=newDataOutputStream(outFile);out.write(1);out.close();與字節(jié)流FileOutputStream類實(shí)現(xiàn)文本文件讀取步驟極其相似過濾流DataOutputStream讀取數(shù)據(jù)過濾流BufferedStream利用緩沖區(qū)來提高讀寫效率BufferedInputStream先將一批數(shù)據(jù)讀入到緩沖區(qū),使用read()方法只需要從緩沖區(qū)獲取數(shù)據(jù),減少物理讀取數(shù)據(jù)的次數(shù)BufferedOutputStream先將數(shù)據(jù)寫到緩沖區(qū),默認(rèn)情況下,只有緩沖區(qū)滿時才會把緩沖區(qū)的數(shù)據(jù)真正寫到數(shù)據(jù)匯調(diào)用flush(),立即將緩沖區(qū)數(shù)據(jù)寫到輸出流中過濾流BufferedStreamBufferedInputStreamBufferedOutputStreamBufferedStream練習(xí)
需求說明圖片top.bmp位于C盤根目錄下,要求將此圖片復(fù)制到D:\myDoc\myPicture.bmp過濾流對象的序列化與反序列化對象的序列化是把對象寫到一個輸出流中,對象的反序列化是從一個輸入流中讀取一個對象實(shí)現(xiàn)java.io.Serializable接口的類ObjectStreamObjectInputStreamObjectOutputStreamObjectStreamwriteObject()readObject()過濾流java.io.Serializable接口過濾流ObjectOutputStream寫入對象過濾流ObjectInputStream讀取對象過濾流transient關(guān)鍵字不參與序列化及反序列化過程
序列化時注意事項(xiàng)不要使用追加的方式寫對象如果一個對象的屬性又是一個對象,則要求這個屬性對象也實(shí)現(xiàn)了Serializable接口字符流
字符編碼Java語言采用Unicode字符編碼
常見的編碼規(guī)范(字符集)ASCIIISO-8859-1GBKUTF-8
亂碼問題字符流字符編碼的轉(zhuǎn)換字符流
字符流的組成ReaderWriter字符流FileReaderFileReader(StringfileName)close()intread(char[]cbuf)
FileWriterFileWriter(StringfileName)close()write(Stringvalue)字符流InputStreamReader和OutputStreamWriter分別是Reader和Writer的子類特點(diǎn):可以把一個字節(jié)流轉(zhuǎn)換成一個字符流
在轉(zhuǎn)換時可以執(zhí)行編碼方式字符流InputStreamReaderInputStreamReader(InputStreamis)InputStreamReader(InputStream
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年CD存放冊項(xiàng)目投資價值分析報告
- 2025至2030年鈦金影印獎牌項(xiàng)目投資價值分析報告
- 2025至2030年純氧吧冷氣墊項(xiàng)目投資價值分析報告
- 2025至2030年普通洗衣粉項(xiàng)目投資價值分析報告
- 2025年度樓層套房租賃合同書(含私人廚師服務(wù))4篇
- 2025版企業(yè)安全保衛(wèi)力量派遣合同范本4篇
- 2025版智能烘焙面包磚設(shè)備租賃合同范本4篇
- 2025年度個人股權(quán)贈與協(xié)議(股權(quán)捐贈)4篇
- 二零二五年度苗木種植與林業(yè)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整合同樣本4篇
- 鄭州師范學(xué)院《基因工程實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 加強(qiáng)教師隊(duì)伍建設(shè)教師領(lǐng)域?qū)W習(xí)二十屆三中全會精神專題課
- 2024-2025學(xué)年人教版數(shù)學(xué)七年級上冊期末復(fù)習(xí)卷(含答案)
- 四年級數(shù)學(xué)上冊人教版24秋《小學(xué)學(xué)霸單元期末標(biāo)準(zhǔn)卷》考前專項(xiàng)沖刺訓(xùn)練
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- (完整版)減數(shù)分裂課件
- 五年級數(shù)學(xué)(小數(shù)乘除法)計算題專項(xiàng)練習(xí)及答案
- 小學(xué)數(shù)學(xué)知識結(jié)構(gòu)化教學(xué)
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫申請范本
- 飯店管理基礎(chǔ)知識(第三版)中職PPT完整全套教學(xué)課件
- 2023年重慶市中考物理A卷試卷【含答案】
評論
0/150
提交評論