java基礎班io流IO流及正則表達式_第1頁
java基礎班io流IO流及正則表達式_第2頁
java基礎班io流IO流及正則表達式_第3頁
java基礎班io流IO流及正則表達式_第4頁
java基礎班io流IO流及正則表達式_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、IO 流及正則表達式1.課程介紹1.IO 流中的異常處理(了解)2.內(nèi)存流(了解)3.緩沖流(掌握)4.打印流(掌握)5.文本掃描器 Scanner(掌握)6.對象流(了解)7.隨機文件RandomAcsFile(了解)8.正則表達式(掌握)2. IO 流中的異常處理1. 文件拷貝示例IO 流中的異常如何處理傳統(tǒng)方式ii.Java7 新方式總結以及注意事項IO 流操作一般都應該關閉;就算讀寫過程中產(chǎn)生了異常,最后也應該關閉,所有關閉流資源的代碼一般放在 finally 結構中Java7 新結構支持自動關閉,但是 try 的()中創(chuàng)建流的對象的流必須是支持自動關閉的(不過一般查看一下文檔)用到的

2、 IO 流都是有實現(xiàn)此接口的,最好用的時候3. 內(nèi)存流內(nèi)存流就是從 IO 流四大抽象類派生出來的 IO 流操作的類而已 ,一共有 4 個類:ByteArrayInputStream1.ByteArrayOutputStreamCharArrayReader CharArrayWriter問題: 如何操作內(nèi)存?內(nèi)存地址?本節(jié)中體現(xiàn)出來的操作內(nèi)存其實是操作一個大型的數(shù)組如何操作磁盤文件的?文件流 : new FileInputStream(D:/通過文件路徑經(jīng)過上面分析,使用內(nèi)存流的時候需要特別關注創(chuàng)建內(nèi)存流對象的時候數(shù)據(jù)來源和輸出的目的地o.java)上面 4 個類的基本的構造方法:ByteAr

3、rayInputStream(byte buf) ByteArrayInputStream(byte buf,buf 參數(shù)就是的數(shù)據(jù)源offset,length)ByteArrayOutputStream() 此對象的有一個默認大小的數(shù)組size) 創(chuàng)建一個具有自定大小的數(shù)組的對象ByteArrayOutputStream(其中的數(shù)據(jù)被寫入一個 byte 數(shù)組。緩沖區(qū)會隨著數(shù)據(jù)的不斷寫入而自動增長。可使用 toByteArray() 和 toString() 獲取數(shù)據(jù)CharArrayReader(char buf)CharArrayReader(char buf,offset,length)

4、CharArrayWriter()CharArrayWriter(initialSize)2. 什么時候會用到內(nèi)存流回顧文件流 File.數(shù)據(jù)在內(nèi)存中處理比磁盤(硬盤)要更快一些,有的時候可能需要臨時在內(nèi)存中保存并處理數(shù)據(jù),內(nèi)存流效率更高3. 如何使用內(nèi)存流4. 總結以及注意事項關閉關閉ByteArrayInputStream 無效??梢赃x擇不用關閉ByteArrayOutputStream 無效iii.關閉 CharArrayWriter 無效4. 緩沖流一般是用戶包裝其它的流,達到高效的讀寫緩沖流類: *4BufferedInputStream BufferedOutputStream B

5、ufferedReaderBufferedWriter1.構造方法:BufferedInputStream(InputStream in) 具有默認大小的緩沖區(qū) 1024*8size) 具有指定大小的緩沖BufferedInputStream(InputStream in,BufferedOutputStream(OutputStream out)BufferedOutputStream(OutputStream out,size)BufferedReader(Reader in)BufferedReader(Reader in,sz)BufferedWriter(Writer out)Buf

6、feredWriter(Writer out,sz)2. 什么時候會用到緩沖流例如文件流程序操作磁盤文件。像直接操作磁盤文件和內(nèi)存操作節(jié)點設備,如果是頻繁的操作效率比較低下。緩沖流,可以把讀寫的數(shù)據(jù)線節(jié)點設備中,減少了操作次數(shù)在緩沖區(qū)中,然后在適當?shù)臅r候刷新(提交)到3. 如何使用緩沖流總結以及注意事項BufferedReader 中具有一個一次讀一行的方法注意此方法是沒有讀到行分隔符的如果沒有數(shù)據(jù)了,返回 nullString readLine()ii.BufferedWriter中具有一個寫一個行分隔符的方法 void newLine()iii.5.打印流(兩個輸出流)普通的打印流是輸出流

7、,只有 2 個PrStream字節(jié)打印流PrWriter字符打印流方法:上面的兩個具有 OutputStream(Writer)中的基本的寫的方法 write appendformatprf這兩個不常用prprln上面的系列方法都是是和 write 差不多效果的,寫的方法2. 標準輸入輸出流以及標準錯誤輸出流System.out是一個特殊的System.err是一個特殊的Eclipse 中顯示紅色的Stream “標準”輸出流 : 輸出結果到控制臺Stream 標準錯誤輸出流 : 輸出到控制臺,在PrPrc) System.in是一個特殊的 InputStream 標準輸入流 : 數(shù)據(jù)源來至控

8、制臺輸入3. 標準輸入輸出流以及標準錯誤輸出流的重定向重定向 : 例如 System.out 把數(shù)據(jù)輸出到控制臺,通過重定向可以改變輸出的目的地System 中提供對應的重定向的方法:ic void setErr(PrStream err) 重新分配“標準”錯誤輸出流。ic void setIn(InputStream in) 重新分配“標準”輸入流。ic void setOut(PrStream out) 重新分配“標準”輸出流。ss s總結以及注意事項重定向的方法調(diào)用代碼必須寫在打印或者輸入的前面打印流都是輸出流prlnpr也是寫的方法6.文本掃描器 Scanner文本掃描器i.相當于一個

9、輸入流1.ii.a 是一個類b 不是 io 包而是 util 包c 沒有拓展至 IO 流的 4 個基本的抽象類,而是 Object d 實現(xiàn)了 Iterator(迭代器)接口思考 :迭代器如何便利 ArrayList ?Scanner 是一個特殊的迭代器,可以看成一個輸入流(一個文件)Scanner 可以(迭代)一個文件,Scanner 是 Iterator 的實現(xiàn)類,應該具有 next 方法,調(diào)用一次就從文件中取出一個數(shù)據(jù),? 一個數(shù)據(jù) 的是什么?Scanner 采用的分隔符模式,默認的分隔符是空白,言外之意定分隔符(支持正則表達式規(guī)則)??梢灾褐竔ii.Scanner 簡單文本掃描器,可

10、以哪些數(shù)據(jù)(數(shù)據(jù)源可以是些什么?)可以是一個文件,對應的構造方法: Scanner(File source)可以是其它的輸入流,對應的構造方法:Scanner(InputStream source)3.僅僅從一個字符串中,對應的構造方法:Scanner(String source)什么時候會用到文本掃描器如何使用文本掃描器掃描傳統(tǒng)的文本文件ii.掃描其它的輸入流iii.掃描純字符串文本iv.自定義分隔符模式進行掃描調(diào)用此方法可以設置自己的模式: Scanner useDelimiter(String pattern)總結以及注意事項Scanner 相當于一個輸入流,其它的參考上面的結構分析是這

11、個字符串而不是此字符串指向ii.new Scanner(D:/123.txt)iii.重要的方法 next - hasNext;nextLine-hasNextLine可以自己指定分隔符模式iv.v.簡單文本掃描器,最好不要用來音頻。7. 對象流對象流1.i.ii.ObjectInputStreamObjectOutputStream讀寫對象的方法:void writeObject(Object obj) Object readObject()2. 什么時候會使用到對象流(API 文檔中有描述)把一些對象持久化(例如保存到文件中),其它時間或者計算機(網(wǎng)絡上的其它計算機)還原對象。嘗試了使用打

12、印流也可以寫對象,問題 : 寫數(shù)據(jù)的時候有局限性,比較復雜,還原時候可能不是很準確對象輸出流會把對象中的相關信息都寫入一個文件(流中),需要使用對應對象輸入流來重構。3. 如何使用對象流總結以及注意事項使用對象流來或?qū)懭氲膶ο蟊仨毷菍崿F(xiàn)了 Serializable 接口的平時見到的 Java 中的類一般都是實現(xiàn)了此接口的,例如 String,8 個包裝類Date.8. 隨機文件 RandomAcsFile隨機文件(流)1.i.java.io 包中,拓展至 Objectii.此類具有和寫入的方法iii.可以實現(xiàn)隨機讀寫隨機不是隨意(隨機)的;可以自己指定位置進行讀寫()如何設置位置,默認的位置是

13、什么構造方法:RandomAcRandomAcsFile(File file, String mode)sFile(String name, String mode)mode 指定是模式 : 讀 或者 寫 或者讀寫,具體有哪些模式參考文檔重要方法:long getFilePoer()獲得偏移量)設置文件指針void seek(longlong length() 返回此文件的長度void setLength(long newLength)設置此文件的長度2. 什么時候會使用到3. 如何使用隨機文件(流)總結以及注意事項在輸出的時候,沒有設置文件指針,會從頭開始寫數(shù)據(jù),之前有的數(shù)據(jù)會被覆蓋(不會覆

14、蓋所有的,而是新數(shù)據(jù)所占據(jù)的位置)每次啟動程序,默認的指針在文件的開頭9. 正則表達式(非常簡單,很重要)正則表達式簡單說就是一組規(guī)則,類似日期格式化設置模式 yyyy-MM-dd不是 Java 特有的一個東西,不同的開發(fā)語言有不同程度的支持正則表達式的使用場景例如記事本的高級替換功能1.頁面中的一些判斷ii.如何書寫正則表達式規(guī)則(就是一個 String 字符串)字符串直接匹配例如 abc匹配 abc, 回想使用 Scanner表示一類事物例如:0-9表示的是 0-9 的任意一個數(shù)字 a-z 表示的任意的一個小寫字母 3578表示可以是任意的 3578iii.數(shù)量例如0-911表示任意的 1

15、1 位數(shù)字0-96,18表示一個范圍iv.4. 如何使用寫好的正則表達式規(guī)則i.例如完成一個判斷號碼的驗證(頁面)1.通過組建獲得用戶輸入的數(shù)據(jù) String num = XX.getText();/自己寫一個正則表達式規(guī)則(怎么判斷?號碼) String regex = 0-911;ii.在 Java 中 String 類中有一定程度的支持(其中有判斷的方法):1.matches(String regex)判斷當前的String 對象是否匹配regex 規(guī)則,如果匹配返回 true 否則false上面的示例 :b=num.matches(regex)2.String replaceAll(String regex, String replacement)把當前 String 對象中的滿足 regex 條件的全部替換成 replacementString split(String regex)分割把當前的 String 對象進行分割,分隔符就是 regex 規(guī)則 - 類似Scanner 中分隔符模式3.返回的拆分完畢的一個 String 數(shù)組String str = 10,20,30,40; Stringres = str.split(,);總結以及拓展String 的如何判斷,信

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論