




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、北京傳智播客教育 API-IO傳智風(fēng)清揚(yáng)本章內(nèi)容北京傳智播客教育 異常File遞歸字節(jié)流轉(zhuǎn)換流字符流其他流異常概述異常:異常就是Java程序在運(yùn)行過程中出現(xiàn)的錯誤。異常由來:問題也是現(xiàn)實(shí)生活中一個具體事務(wù),也可以通過java 的類的形式進(jìn)行描述,并封裝成對象。其實(shí)就是Java對不正常情況進(jìn)行描述后的對象體現(xiàn)。我們見過的異常,角標(biāo)越界異常,空指針異常北京傳智播客教育 異常分類異常分類圖解北京傳智播客教育 ThrowableErrorException子類子類RuntimeException子類異常舉例除數(shù)為0數(shù)組訪問越界北京傳智播客教育 JVM的默認(rèn)處理方案把異常的名稱,錯誤原因及異常出現(xiàn)的位置
2、等信息輸出在了控制臺程序停止執(zhí)行北京傳智播客教育 異常處理方案異常處理方案trycatchfinallythrows北京傳智播客教育 trycatch處理方式一個異常的情況多個異常的情況平級情況存在上下級的情況JDK7的新特性及注意事項(xiàng)北京傳智播客教育 編譯時異常和運(yùn)行時異常的區(qū)別Java中的異常被分為兩大類:編譯時異常和運(yùn)行時異常。所有的RuntimeException類及其子類的實(shí)例被稱為運(yùn)行時異常,其他的異常就是編譯時異常編譯時異常Java程序必須顯示處理,否則程序就會發(fā)生錯誤,無法通過編譯運(yùn)行時異常無需顯示處理,也可以和編譯時異常一樣處理北京傳智播客教育 Throwable中的方法ge
3、tMessage()獲取異常信息,返回字符串。toString()獲取異常類名和異常信息,返回字符串。printStackTrace()獲取異常類名和異常信息,以及異常出現(xiàn)在程序中的位置。返回值void。printStackTrace(PrintStreams)通常用該方法將異常內(nèi)容保存在日志文件中,以便查閱。 北京傳智播客教育 throws定義功能方法時,需要把出現(xiàn)的問題暴露出來讓調(diào)用者去處理。那么就通過throws在方法上標(biāo)識。舉例分別演示編譯時異常和運(yùn)行時異常的拋出北京傳智播客教育 throw在功能方法內(nèi)部出現(xiàn)某種情況,程序不能繼續(xù)運(yùn)行,需要進(jìn)行跳轉(zhuǎn)時,就用throw把異常對象拋出。舉例
4、分別演示編譯時異常對象和運(yùn)行時異常對象的拋出北京傳智播客教育 throws和throw的區(qū)別throws用在方法聲明后面,跟的是異常類名可以跟多個異常類名,用逗號隔開表示拋出異常,由該方法的調(diào)用者來處理throws表示出現(xiàn)異常的一種可能性,并不一定會發(fā)生這些異常throw用在方法體內(nèi),跟的是異常對象名只能拋出一個異常對象名表示拋出異常,由方法體內(nèi)的語句處理throw則是拋出了異常,執(zhí)行throw則一定拋出了某種異常 北京傳智播客教育 我們到底該如何處理異常呢原則:如果該功能內(nèi)部可以將問題處理,用try,如果處理不了,交由調(diào)用者處理,這是用throw區(qū)別:后續(xù)程序需要繼續(xù)運(yùn)行就try后續(xù)程序不需
5、要繼續(xù)運(yùn)行就throws舉例:感冒了就自己吃點(diǎn)藥就好了,try吃了好幾天藥都沒好結(jié)果得了H7N9,那就的得throw到醫(yī)院如果醫(yī)院沒有特效藥就變成Error了北京傳智播客教育 finally的特點(diǎn)作用及面試題finally的特點(diǎn)被finally控制的語句體一定會執(zhí)行特殊情況:在執(zhí)行到finally之前jvm退出了(比如System.exit(0)finally的作用用于釋放資源,在IO流操作和數(shù)據(jù)庫操作中會見到finally相關(guān)的面試題final,finally和finalize的區(qū)別如果catch里面有return語句,請問finally的代碼還會執(zhí)行嗎?如果會,請問是在return前還是r
6、eturn后。北京傳智播客教育 自定義異??荚嚦煽儽仨氃?-100之間很明顯java沒有對應(yīng)的異常,需要我們自己來做一個異常自定義異常繼承自Exception繼承自RuntimeException北京傳智播客教育 異常注意事項(xiàng)子類覆蓋父類方法時,子類的方法必須拋出相同的異常或父類異常的子類。(父親壞了,兒子不能比父親更壞)如果父類拋出了多個異常,子類覆蓋父類時,只能拋出相同的異?;蛘呤撬淖蛹?子類不能拋出父類沒有的異常如果被覆蓋的方法沒有異常拋出,那么子類的方法絕對不可以拋出異常,如果子類方法內(nèi)有異常發(fā)生,那么子類只能try,不能throws北京傳智播客教育 File類概述和構(gòu)造方法File
7、類的概述文件和目錄路徑名的抽象表示形式構(gòu)造方法public File(String pathname)public File(String parent,String child)public File(File parent,String child)北京傳智播客教育 File類的成員方法創(chuàng)建功能public boolean createNewFile()public boolean mkdir()public boolean mkdirs()刪除功能public boolean delete()重命名功能public boolean renameTo(File dest)北京傳智播客教育
8、File類的成員方法判斷功能public boolean isDirectory()public boolean isFile()public boolean exists()public boolean canRead()public boolean canWrite()public boolean isHidden()北京傳智播客教育 File類的成員方法基本獲取功能public String getAbsolutePath()public String getPath()public String getName()public long length()public long last
9、Modified()高級獲取功能public String list()public File listFiles()北京傳智播客教育 File類練習(xí)判斷D盤目錄下是否有后綴名為.jpg的文件,如果有,就輸出次文件名稱文件名稱過濾器的實(shí)現(xiàn)思想及代碼public String list(FilenameFilter filter)public File listFiles(FilenameFilter filter)查看源碼看執(zhí)行流程北京傳智播客教育 遞歸的思想概述遞歸方法定義中調(diào)用方法本身的現(xiàn)象遞歸注意實(shí)現(xiàn)要有出口,否則就是死遞歸次數(shù)不能太多,否則就內(nèi)存溢出構(gòu)造方法不能遞歸使用北京傳智播客教育
10、 遞歸解決問題的思想及內(nèi)存圖遞歸解決問題的思想找到出口找到規(guī)律求階乘案例普通for循環(huán)遞歸實(shí)現(xiàn)畫內(nèi)存圖斷點(diǎn)查看執(zhí)行流程北京傳智播客教育 遞歸練習(xí)兔子問題(斐波那契數(shù)列)遞歸遍歷目錄下指定后綴名結(jié)尾的文件名稱遞歸刪除帶內(nèi)容的目錄北京傳智播客教育 IO流概述IO流用來處理設(shè)備之間的數(shù)據(jù)傳輸上傳文件和下載文件Java對數(shù)據(jù)的操作是通過流的方式Java用于操作流的對象都在IO包中北京傳智播客教育 IO流分類按照數(shù)據(jù)流向輸入流讀入數(shù)據(jù)輸出流寫出數(shù)據(jù)按照數(shù)據(jù)類型字節(jié)流字符流什么情況下使用哪種流呢?如果數(shù)據(jù)所在的文件通過windows自帶的記事本打開并能讀懂里面的內(nèi)容,就用字符流。其他用字節(jié)流。如果你什么都
11、不知道,就用字節(jié)流北京傳智播客教育 IO流常用基類字節(jié)流的抽象基類:InputStream ,OutputStream。字符流的抽象基類:Reader , Writer。注:由這四個類派生出來的子類名稱都是以其父類名作為子類名的后綴。如:InputStream的子類FileInputStream。如:Reader的子類FileReader。北京傳智播客教育 字節(jié)流寫數(shù)據(jù)OutputStreamFileOutputStream往一個文本文件中寫一句話:”helloworld”分析發(fā)現(xiàn)其實(shí)更適合用字符流,但是由于字節(jié)流先出現(xiàn),所以,我們考慮先使用字節(jié)流后面再講會什么出現(xiàn)字符流。FileOutput
12、Stream的構(gòu)造方法FileOutputStream(File file)FileOutputStream(String name)北京傳智播客教育 字節(jié)流寫數(shù)據(jù)的方式public void write(int b)public void write(byte b)public void write(byte b,int off,int len)北京傳智播客教育 字節(jié)流寫數(shù)據(jù)常見問題創(chuàng)建字節(jié)輸出流到底做了哪些事情?數(shù)據(jù)寫成功后,為什么要close()?如何實(shí)現(xiàn)數(shù)據(jù)的換行?如何實(shí)現(xiàn)數(shù)據(jù)的追加寫入?北京傳智播客教育 字節(jié)流寫數(shù)據(jù)加入異常處理加入異常處理的IO流操作北京傳智播客教育 字節(jié)流讀取數(shù)據(jù)
13、InputStreamFileInputStream把剛才寫的數(shù)據(jù)讀取出來顯示在控制臺FileInputStream的構(gòu)造方法FileInputStream(File file)FileInputStream(String name)FileInputStream的成員方法public int read()public int read(byte b)北京傳智播客教育 字節(jié)流讀取數(shù)據(jù)兩種方式圖解比較一次讀取一個字節(jié)一次讀取一個字節(jié)數(shù)組每次可以讀取多個數(shù)據(jù),提高了操作效率北京傳智播客教育 字節(jié)流復(fù)制數(shù)據(jù)練習(xí)把當(dāng)前項(xiàng)目目錄下的a.txt內(nèi)容復(fù)制到當(dāng)前項(xiàng)目目錄下的b.txt中把c:a.txt內(nèi)容復(fù)制
14、到d:b.txt中把d:林青霞.jpg內(nèi)容復(fù)制到當(dāng)前項(xiàng)目目錄下的mn.jpg中把d:哥有老婆.mp4復(fù)制到當(dāng)前項(xiàng)目目錄下的copy.mp4中北京傳智播客教育 字節(jié)緩沖流字節(jié)流一次讀寫一個數(shù)組的速度明顯比一次讀寫一個字節(jié)的速度快很多,這是加入了數(shù)組這樣的緩沖區(qū)效果,java本身在設(shè)計的時候,也考慮到了這樣的設(shè)計思想(裝飾設(shè)計模式后面講解),所以提供了字節(jié)緩沖區(qū)流字節(jié)緩沖輸出流BufferedOutputStream字節(jié)緩沖輸入流BufferedInputStream北京傳智播客教育 字節(jié)緩沖流復(fù)制數(shù)據(jù)練習(xí)把d:林青霞.jpg內(nèi)容復(fù)制到當(dāng)前項(xiàng)目目錄下的mn.jpg中把d:哥有老婆.mp4復(fù)制到當(dāng)前
15、項(xiàng)目目錄下的copy.mp4中四種方式比較復(fù)制效率北京傳智播客教育 轉(zhuǎn)換流出現(xiàn)的原因及思想由于字節(jié)流操作中文不是特別方便,所以,java就提供了轉(zhuǎn)換流。字符流=字節(jié)流+編碼表。北京傳智播客教育 編碼表概述和常見的編碼表編碼表由字符及其對應(yīng)的數(shù)值組成的一張表常見編碼表ASCII/Unicode 字符集ISO-8859-1GB2312/GBK/GB18030BIG5UTF-8北京傳智播客教育 字符串中的編碼問題編碼把看得懂的變成看不懂的解碼把看不懂的變成看得懂的北京傳智播客教育 轉(zhuǎn)換流概述OutputStreamWriter 字符輸出流public OutputStreamWriter(Outpu
16、tStream out)public OutputStreamWriter(OutputStream out,String charsetName)InputStreamReader 字符輸入流public InputStreamReader(InputStream in)public InputStreamReader(InputStream in,String charsetName)北京傳智播客教育 OutputStreamWriter寫數(shù)據(jù)OutputStreamWriter寫數(shù)據(jù)方法public void write(int c)public void write(char cbuf
17、)public void write(char cbuf,int off,int len)public void write(String str)public void write(String str,int off,int len)字符流操作要注意的問題flush()的作用flush()和close()的區(qū)別北京傳智播客教育 InputStreamReader讀數(shù)據(jù)OutputStreamWriter讀數(shù)據(jù)方法public int read()public int read(char cbuf)北京傳智播客教育 字符流復(fù)制文本文件把當(dāng)前項(xiàng)目目錄下的a.txt內(nèi)容復(fù)制到當(dāng)前項(xiàng)目目錄下的b.
18、txt中把c:a.txt內(nèi)容復(fù)制到d:b.txt中北京傳智播客教育 轉(zhuǎn)換流的簡化寫法轉(zhuǎn)換流的名字比較長,而我們常見的操作都是按照本地默認(rèn)編碼實(shí)現(xiàn)的,所以,為了簡化我們的書寫,轉(zhuǎn)換流提供了對應(yīng)的子類。FileWriterFileReader北京傳智播客教育 FileWriter和FileReaderFileWriter寫數(shù)據(jù)FileReader讀取數(shù)據(jù)FileWriter和FileReader實(shí)現(xiàn)文本文件的復(fù)制北京傳智播客教育 字符緩沖流BufferedWriter基本用法BufferedReader基本用法字符緩沖流復(fù)制文本文件特殊功能BufferedWritervoid newLine()B
19、ufferedReaderString readLine()字符緩沖流特殊功能復(fù)制文本文件北京傳智播客教育 IO流小結(jié)字節(jié)流字節(jié)輸入流字節(jié)輸出流字符流字符輸入流字符輸出流北京傳智播客教育 IO流練習(xí)復(fù)制文本文件復(fù)制圖片把ArrayList集合中的字符串?dāng)?shù)據(jù)存儲到文本文件從文本文件中讀取數(shù)據(jù)(每一行為一個字符串?dāng)?shù)據(jù))到集合中,并遍歷集合復(fù)制單極文件夾復(fù)制單極文件夾中指定文件并修改文件名稱復(fù)制多級文件夾鍵盤錄入5個學(xué)生信息(姓名,語文成績,數(shù)學(xué)成績,英語成績),按照總分從高到低存入文本文件北京傳智播客教育 IO流練習(xí)已知a.txt文件中有這樣的一個字符串:“hcexfgijkamdnoqrzstu
20、vwybpl” 請編寫程序讀取數(shù)據(jù)內(nèi)容,把數(shù)據(jù)排序后寫入b.txt中。用Reader模擬BufferedReader的readLine()功能自定義類模擬LineNumberReader的特有功能獲取每次讀取數(shù)據(jù)的行號登錄注冊IO版北京傳智播客教育 操作基本數(shù)據(jù)類型的流操作基本數(shù)據(jù)類型DataInputStreamDataOutputStream北京傳智播客教育 內(nèi)存操作流操作字節(jié)數(shù)組ByteArrayInputStreamByteArrayOutputStream操作字符數(shù)組CharArrayReaderCharArrayWrite操作字符串StringReaderStringWriter北
21、京傳智播客教育 打印流打印流概述字節(jié)流打印流字符打印流打印流特點(diǎn)只能操作目的地,不能操作數(shù)據(jù)??梢圆僮魅我忸愋偷臄?shù)據(jù)。如果啟動了自動刷新,能夠自動刷新??梢圆僮魑募牧鞔蛴×鲝?fù)制文本文件北京傳智播客教育 標(biāo)準(zhǔn)輸入輸出流System類中的字段:in,out。它們各代表了系統(tǒng)標(biāo)準(zhǔn)的輸入和輸出設(shè)備。默認(rèn)輸入設(shè)備是鍵盤,輸出設(shè)備是顯示器。System.in的類型是InputStream.System.out的類型是PrintStream是OutputStream的子類FilterOutputStream 的子類.北京傳智播客教育 隨機(jī)訪問流RandomAccessFile概述RandomAccessFile類不屬于流,是Object類的子類。但它融合了InputStream和OutputStream的功能。支持對隨機(jī)訪問文件的讀取和寫入。案例演示北京傳智播客教育 合并流SequenceInputStream概述SequenceInputStream類可以將多個輸入流串流在一起,合并為一個輸入流,因此,該流也被稱為合并流。SequenceInputStream的構(gòu)造方法SequenceInputStream(InputStream s1, I
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 輕量級圖數(shù)據(jù)庫引擎NeuroDB應(yīng)用
- 2025年度文化演出合同解除終止范本
- 體育場館用地轉(zhuǎn)讓居間
- 2025年度戶外廣告牌鋼結(jié)構(gòu)彩鋼棚定制與安裝服務(wù)合同
- 2025年度婚禮用品租賃合同到期時間及續(xù)租優(yōu)惠
- 2025年度婚前協(xié)議:基于父母首付的購房合同及婚后財產(chǎn)分割協(xié)議
- 2025年度合伙企業(yè)合伙份額轉(zhuǎn)讓與大數(shù)據(jù)分析服務(wù)協(xié)議
- 2025年度勞動合同必須包含的員工離職與接續(xù)就業(yè)協(xié)議
- 2025年度工傷私了賠償協(xié)議標(biāo)準(zhǔn)文本及解析
- 社會辦醫(yī)院章程范本
- 杭州市淳安縣國有企業(yè)招聘筆試真題2024
- 安徽省蕪湖市2024-2025學(xué)年第一學(xué)期期末考試七年級語文試卷(含答案)
- 2024政府采購評審專家考試真題庫及答案
- 2024年花盆市場分析現(xiàn)狀
- 2025山東省退役軍人事務(wù)廳所屬事業(yè)單位招聘人員歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年社區(qū)工作者考試時事政治模擬題及答案
- 物業(yè)服務(wù)行業(yè)禮儀培訓(xùn)
- 2025《國家安全教育》教學(xué)大綱
- 部編版語文小學(xué)五年級下冊第一單元集體備課(教材解讀)
- 商鋪裝修竣工驗(yàn)收表(營運(yùn)發(fā)存)
- 陜旅版四年級下冊英語全冊教案及各單元知識點(diǎn)總結(jié)
評論
0/150
提交評論