【馬士兵】筆記_Java IO流

有道雲筆記 連接:

http://note.youdao.com/share/?id=7a322ea0150fbc678da417d68f53c9f4&type=note


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下可忽略:




 

 Java IO流》

 

 

把“流(Stream)”想象成捅在文件上的“管道”。

 

做一些個IO系統的項目用到的是這章內容。

 

 

輸入/輸出的方向是按程序(而不是文件來講的)。從文件中讀數據--輸入流;往文件裏寫數據--輸出流。

1字符 = 2字節。Java中是UNICODE字符串,UTF-16

Stream結尾的都是字節流

InputStreamOutputStreamReaderWriter都是抽象類(非接口)。

 

String直接寫出的方法voidwrite(Stringstr)thorowsIOException是用到了String的一個構造方法,能將字符串轉化爲字符數組char[]

總結

JavaIO流,使用了裝飾模式InputStream只能讀字節、Byte[]數組,

reader的可以讀char; 如果在reader上再裝飾一層buffered,那麼就可以讀String,方法是readline()

BufferedReaderBufferedWriter很普遍。readLine()BufferedReader的好處之一,讀一行。

注意InputStreamReaderReader的區別,前者是針對InputStream對象的,後者是針對File的。一個是處理流,一個是節點流。

ISO8859_1 歐洲的字符編碼,包含所有西歐語言。也叫latin-1

unicode包含所有語言的編碼集。包括utf-8utf-16等。

GB**** 中文(國標)編碼集。包括GBKGB2312等。

上例,BufferedReader的封裝是爲了使用readLine()方法,常用。System.in:接收的是鍵盤輸入,類型是InputStream

上例,演示了處理流套裝節點流。ByteArrayOutputStream,這種輸出流將數據按“字節串”輸出(而不是OutputStream的一個個字節輸出);這樣,進一步用DataOutputStream套裝,就可以將數據按doubleboolean等類型(分別佔81個字節)直接寫入,用的writeDouble()writeBoolean()方法。

DataInputStream在網絡傳輸中用於讀取遠端傳過來的地址等信息(直接按int讀)。

Object序列化,最常見的例子是:Word中畫一個矩形(或三角形等形狀),是把這個矩形的信息放在一個Object中,存起來;下次啓動Word時自動調取這個Object重新畫出來。電子遊戲的存盤,也是將當前場景中的所有按Object存起來。

注意,serializable接口是一個標識性接口,裏面沒有方法。這個標誌是給編譯器看的。

上例,transient,“透明的”,表示在序列化的時候不考慮進去。當把一個T對象序列化又反序列化後,ijd的值不變,但是k的值是0.說明序列化的時候沒有把k算進去。







email: [email protected]




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章