![Java核心邏輯第13章-IO_第1頁(yè)](http://file4.renrendoc.com/view/8d9b256d4ff6f967f2553f9a880f5a78/8d9b256d4ff6f967f2553f9a880f5a781.gif)
![Java核心邏輯第13章-IO_第2頁(yè)](http://file4.renrendoc.com/view/8d9b256d4ff6f967f2553f9a880f5a78/8d9b256d4ff6f967f2553f9a880f5a782.gif)
![Java核心邏輯第13章-IO_第3頁(yè)](http://file4.renrendoc.com/view/8d9b256d4ff6f967f2553f9a880f5a78/8d9b256d4ff6f967f2553f9a880f5a783.gif)
![Java核心邏輯第13章-IO_第4頁(yè)](http://file4.renrendoc.com/view/8d9b256d4ff6f967f2553f9a880f5a78/8d9b256d4ff6f967f2553f9a880f5a784.gif)
![Java核心邏輯第13章-IO_第5頁(yè)](http://file4.renrendoc.com/view/8d9b256d4ff6f967f2553f9a880f5a78/8d9b256d4ff6f967f2553f9a880f5a785.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JAVA核心邏輯
第十三章:文件與I/O流
目錄File類的使用I/O分類
字節(jié)流
字符流
對(duì)象序列化文件
什么是文件文件可認(rèn)為是相關(guān)記錄或放在一起的數(shù)據(jù)的集合
文件存儲(chǔ)位置JAVA程序如何訪問文件屬性JAVAAPI:java.io.File類File類java.io.File類代表硬盤上的一個(gè)文件或者文件夾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()返回此對(duì)象表示的文件的相對(duì)路徑名StringgetAbsolutePath()返回此對(duì)象表示的文件的絕對(duì)路徑名StringgetName()返回此對(duì)象表示的文件或目錄的名稱booleandelete()刪除此對(duì)象指定的文件或目錄booleancreateNewFile()創(chuàng)建名稱的空文件,不創(chuàng)建文件夾longlength()返回文件的長(zhǎng)度,單位為字節(jié),如果文件不存在,則返回0L文件練習(xí)需求說明實(shí)現(xiàn)查看文件屬性、創(chuàng)建和刪除文件文件屬性包括:文件的絕對(duì)路徑、文件名稱、文件字節(jié)數(shù)I/OI/O概念通過流來讀寫文件流是指一連串流動(dòng)的字符,是以先進(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
字符流輸入輸出流是相對(duì)于計(jì)算機(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對(duì)象讀取文本文件的數(shù)據(jù)關(guān)閉文件流對(duì)象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ù)時(shí)將覆蓋文件中原有的內(nèi)容2、創(chuàng)建FileOutputStream實(shí)例時(shí),如果相應(yīng)的文件并不存在,則會(huì)自動(dòng)創(chuàng)建一個(gè)空的文件FileOutputStream字節(jié)輸入流使用FileOutputStream
寫文本文件引入相關(guān)的類構(gòu)造文件輸出流FileOutputStream對(duì)象關(guān)閉文件流對(duì)象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對(duì)象,負(fù)責(zé)對(duì)D:\我的青春誰做主.txt文件的讀取。4.創(chuàng)建輸出流FileOutputStream對(duì)象,負(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)造必須使用一個(gè)已經(jīng)存在的輸入流/輸出流,并用它進(jìn)行實(shí)際的讀寫。DataStreamDataInputStreamDataOutputStreamBufferedStreamBufferedInputStreamBufferedOutputStream過濾流DataInputStreamFileInputStream的子類與FileInputStream類結(jié)合使用讀取按照與平臺(tái)無關(guān)的方式從流中讀取基本類型(int、char和long等)的數(shù)據(jù)readXxx();DataOutputStreamFileOutputStream的子類與FileOutputStream類結(jié)合使用向流中寫基本類型的數(shù)據(jù)writeXxx();過濾流DataInputStream讀取數(shù)據(jù)的步驟引入相關(guān)的類構(gòu)造數(shù)據(jù)輸入流對(duì)象調(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ù)輸出流對(duì)象調(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ū)滿時(shí)才會(huì)把緩沖區(qū)的數(shù)據(jù)真正寫到數(shù)據(jù)匯調(diào)用flush(),立即將緩沖區(qū)數(shù)據(jù)寫到輸出流中過濾流BufferedStreamBufferedInputStreamBufferedOutputStreamBufferedStream練習(xí)
需求說明圖片top.bmp位于C盤根目錄下,要求將此圖片復(fù)制到D:\myDoc\myPicture.bmp過濾流對(duì)象的序列化與反序列化對(duì)象的序列化是把對(duì)象寫到一個(gè)輸出流中,對(duì)象的反序列化是從一個(gè)輸入流中讀取一個(gè)對(duì)象實(shí)現(xiàn)java.io.Serializable接口的類ObjectStreamObjectInputStreamObjectOutputStreamObjectStreamwriteObject()readObject()過濾流java.io.Serializable接口過濾流ObjectOutputStream寫入對(duì)象過濾流ObjectInputStream讀取對(duì)象過濾流transient關(guān)鍵字不參與序列化及反序列化過程
序列化時(shí)注意事項(xiàng)不要使用追加的方式寫對(duì)象如果一個(gè)對(duì)象的屬性又是一個(gè)對(duì)象,則要求這個(gè)屬性對(duì)象也實(shí)現(xiàn)了Serializable接口字符流
字符編碼Java語(yǔ)言采用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):可以把一個(gè)字節(jié)流轉(zhuǎn)換成一個(gè)字符流
在轉(zhuǎn)換時(shí)可以執(zhí)行編碼方式字符流InputStreamReaderInputStreamReader(InputStreamis)InputStreamReader(InputStream
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公室翻新補(bǔ)貼合同協(xié)議書
- 智能機(jī)器人研發(fā)與銷售合作合同
- 中秋月餅購(gòu)銷合同書
- 無人機(jī)技術(shù)開發(fā)與應(yīng)用作業(yè)指導(dǎo)書
- 農(nóng)業(yè)休閑旅游與三農(nóng)深度融合策略研究
- 化妝品買賣合同
- 房屋買賣合同協(xié)議書
- 個(gè)人地皮轉(zhuǎn)讓協(xié)議書
- 人力資源管理關(guān)鍵步驟指導(dǎo)書
- 國(guó)際貿(mào)易進(jìn)口合同履行流程
- 賬期協(xié)議書賬期合同書
- 信息技術(shù)課程標(biāo)準(zhǔn)2023版:義務(wù)教育小學(xué)階段
- 2024年興業(yè)銀行股份有限公司校園招聘考試試題參考答案
- 2024年常德職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整
- 天津市河?xùn)|區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 黑龍江省哈爾濱市2024年數(shù)學(xué)八年級(jí)下冊(cè)期末經(jīng)典試題含解析
- 克羅恩病的外科治療
- 金屬表面處理中的冷噴涂技術(shù)
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量檢測(cè)化學(xué)試題(解析版)
- 建設(shè)平安校園筑牢安全防線
- 黑龍江省齊齊哈爾市2023-2024學(xué)年高一上學(xué)期1月期末英語(yǔ)試題(含答案解析)
評(píng)論
0/150
提交評(píng)論