![Java核心邏輯第13章-IO_第1頁](http://file4.renrendoc.com/view/8d9b256d4ff6f967f2553f9a880f5a78/8d9b256d4ff6f967f2553f9a880f5a781.gif)
![Java核心邏輯第13章-IO_第2頁](http://file4.renrendoc.com/view/8d9b256d4ff6f967f2553f9a880f5a78/8d9b256d4ff6f967f2553f9a880f5a782.gif)
![Java核心邏輯第13章-IO_第3頁](http://file4.renrendoc.com/view/8d9b256d4ff6f967f2553f9a880f5a78/8d9b256d4ff6f967f2553f9a880f5a783.gif)
![Java核心邏輯第13章-IO_第4頁](http://file4.renrendoc.com/view/8d9b256d4ff6f967f2553f9a880f5a78/8d9b256d4ff6f967f2553f9a880f5a784.gif)
![Java核心邏輯第13章-IO_第5頁](http://file4.renrendoc.com/view/8d9b256d4ff6f967f2553f9a880f5a78/8d9b256d4ff6f967f2553f9a880f5a785.gif)
版權(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ì)算機(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公室翻新補(bǔ)貼合同協(xié)議書
- 智能機(jī)器人研發(fā)與銷售合作合同
- 中秋月餅購銷合同書
- 無人機(jī)技術(shù)開發(fā)與應(yīng)用作業(yè)指導(dǎo)書
- 農(nóng)業(yè)休閑旅游與三農(nóng)深度融合策略研究
- 化妝品買賣合同
- 房屋買賣合同協(xié)議書
- 個人地皮轉(zhuǎn)讓協(xié)議書
- 人力資源管理關(guān)鍵步驟指導(dǎo)書
- 國際貿(mào)易進(jìn)口合同履行流程
- 賬期協(xié)議書賬期合同書
- 信息技術(shù)課程標(biāo)準(zhǔn)2023版:義務(wù)教育小學(xué)階段
- 2024年興業(yè)銀行股份有限公司校園招聘考試試題參考答案
- 2024年常德職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整
- 天津市河?xùn)|區(qū)2023-2024學(xué)年九年級上學(xué)期期末數(shù)學(xué)試題
- 黑龍江省哈爾濱市2024年數(shù)學(xué)八年級下冊期末經(jīng)典試題含解析
- 克羅恩病的外科治療
- 金屬表面處理中的冷噴涂技術(shù)
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量檢測化學(xué)試題(解析版)
- 建設(shè)平安校園筑牢安全防線
- 黑龍江省齊齊哈爾市2023-2024學(xué)年高一上學(xué)期1月期末英語試題(含答案解析)
評論
0/150
提交評論