黑馬程式設計師Java培訓和Android培訓_IO(二)
1. 字元編碼
Unicode編碼:
ISO將全世界所有的字元進行了統一的編碼,稱之為Unicode
“中”在全世界的任何一個角落,始終對應的都是一個十六進位制的數字4e2d
如果所有的計算機都使用Unicode編碼,在中國的本地系統中顯示的“中這個字元”傳送到世界各地顯示的仍然是“中這個字元
Unicode只佔用兩個位元組,在全世界範圍內,表示的字元個數不會超過2的16次方,實際上,Unicode編碼中還保留了兩千個多個數值沒有用於字元編碼
在相當長的一段時間內,本地話字元將與Unicode共存
Java中的字元使用的都是Unicode編碼,java在通過Unicode保證跨平臺的特性前提下,也支援本地平臺的字符集
Utf-8編碼
ASCII碼字元保持原樣,仍然只佔用一個位元組,對於其他國家的字元,utf-8使用兩個或三個位元組來表示,使用UTF-8編碼的檔案,通常要用EFBB BF作為檔案開頭的三個位元組資料
2. 各種過濾與包裝類
(1). 過濾與包裝類
通過FileOutpuStream物件將一個浮點小數寫入到檔案中,是否有點困難?能否通過FileOutputStream物件直接將一個整數寫入到檔案呢?
假如有個DataOutputStream類中提供了各種輸出流物件寫入各種型別的資料(當然包括浮點小數)的方法。你現在所要做的工作就是:傳遞一個FileOutputStream輸出流物件給DataOutputStream例項物件呼叫DataOutputStream例項物件用於寫入浮點小數的方法。
DataOutputStream並沒有反應到任何具體的流裝置,一定要給它傳遞一個對應具體流裝置的輸出物件,完成類似DataOutputStream功能的類就是一個包裝類,也叫過濾流或處理流類
(2).BufferedInputStream與BufferedOutputStream類
緩衝流為I/O流增加了記憶體緩衝區,增加緩衝區有兩個基本目的:
允許java程式一次不止操作一個位元組,這樣提高了程式的效能。
由於有了緩衝區,使得在流上執行skip、mark和reset方法成為可能
BufferedInputStream與BufferedOutputStream是java提供的兩個緩衝區包裝類,不管底層系統是否使用了緩衝區,這兩個類在自己的例項物件中建立緩衝區,想想這種緩衝區底層系統提供的緩衝區區別。
BufferedIputStream的兩個建構函式
BufferedInputStream(InputStream in);
BufferedInputStream(IntpuStream inint size);
BufferedOutputStream的兩個建構函式
BufferedOutputStream(InputStream out);
BufferedOutputStream(OutpuStream out,int size);
(3)BufferedReader和BufferedWriter類
BufferedReader的readLine方法可以一次讀取一行文字,BufferedWriter的writeLine方法可以向不同的字元流中寫入不同作業系統下的換行符。
(4) DataInputStream與DataOutoutStream類
DataOutoutStreaml類提供了三個寫入字串的方法
Public finalvoid writeBytes(String s)
Public finalvoid writeChars(String s)
Public finalvoid writeUTF(String str)
為什麼DataInputStream類中有一個readUFT方法,而沒有“readBytes”和readChars方法
(5)PrintStream類
PrintStream類提供了一系列的print和println方法,可以將基本資料型別的資料格式化成字串。
格式化輸出是什麼意思呢?例如97的格式化輸出的實際位元組資料為0x39和0x37。
PrintStream類的三個建構函式
PrintStream(OutputStream out)
PrintStream(OutputStream out,boolean autoflush)
PrintStream(OutputStream out, booleanautoflush,String encoding)
PrintlnStream對應的PrintWrite類,即使遇到了文字換行識別符號(\n)Printwrite類也不會自動清空緩衝區。
PrintWriter的print能根據作業系統的不同生成相應的文字換行識別符號,在window下的文字標識換行符是“\r\n”在linux下是“\n”
(6)ObjectInputStream和ObjectOutputStream
ObjectInputStream和ObjectOutputStream這兩個包裝類用於底層輸入流中讀取型別物件的資料和將物件型別的資料寫入底層輸出流
ObjectInputStream和ObjectOutputStream所讀寫的物件必須實現Serializble介面,物件中的stransien和static型別的成員變數不會被讀取和寫入
Decorator設計模式
在程式中用一個物件(the Decorator)包裝另外的一個物件,稱之為Decorator模式。
public static void main(String[] args) {
try {
throw new Exception("test");
} catch (Exception e) {
//字串和輸出流的橋樑StringWriter
StringWriter sw = new StringWriter();
//建立輸出流幷包裝writer物件
PrintWriter pw = new PrintWriter(sw);
//引數傳遞
e.printStackTrace(pw);
//列印異常的詳細資訊
System.out.println(sw.toString());
}
}
相關文章
- 黑馬程式設計師Java培訓和Android培訓:培訓前奏程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓Java技術二程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:列舉程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:I/O程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:程式設計基礎程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:物件導向程式設計師JavaAndroid物件
- 黑馬程式設計師Java培訓和Android培訓:內部類程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:多執行緒程式設計師JavaAndroid執行緒
- 黑馬程式設計師Java培訓和Android培訓_java高新技術(一)程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓Java GUI圖形使用者介面程式設計師JavaAndroidGUI
- Java程式設計師技術培訓需要培訓哪些?Java程式設計師
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java培訓分享Java面試題集合篇二程式設計師Java面試題
- 長沙Java培訓:自學Java程式設計有必要報培訓班麼?Java程式設計
- 好程式設計師Java培訓Java程式設計師必學技術程式設計師Java
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Java培訓分享Java和HTML的區別?程式設計師JavaHTML
- 好程式設計師Java培訓Java容器類List和Set分析程式設計師Java
- 程式設計師自學/自我培訓指南程式設計師
- 好程式設計師Java培訓分享maven-概述程式設計師JavaMaven
- Java程式設計師培訓班哪家比較好Java程式設計師
- 好程式設計師Java培訓分享int和Integer的區別程式設計師Java
- 好程式設計師Java培訓分享treeset和hashset的區別程式設計師Java
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- 好程式設計師Java培訓分享Java之反射技術程式設計師Java反射
- 好程式設計師Java培訓分享Java初學者必讀程式設計師Java
- 好程式設計師Java培訓分享Java多執行緒程式設計師Java執行緒
- 好程式設計師Java培訓分享Java包是什麼?程式設計師Java
- 好程式設計師Java培訓分享如何快速入門Java程式設計師Java
- 好程式設計師Java培訓分享BigDecimal的用法程式設計師JavaDecimal
- 好程式設計師Java培訓分享SpringBoot -YAML程式設計師JavaSpring BootYAML
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java
- 好程式設計師Java培訓分享Mybatis面試題集合程式設計師JavaMyBatis面試題
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 好程式設計師Java培訓分享本地快取如何設計程式設計師Java快取
- java培訓分享:java培訓架構師學習線路圖Java架構
- 好程式設計師Java培訓分享學Java程式設計要注意什麼程式設計師Java