Java 字元碼、字元流、位元組流
字元編碼表
Ascii: 0-xxxxxxx正數
iso-8859-1: 拉丁碼錶1-xxxxxxx 負數。
GB2312: 簡體中文碼錶
GBK: 最常用的中文碼錶 String字串預設
GB18030: 最新的中文碼錶
unicode: 國際標準碼錶 char字元預設 每個字元兩位元組
UTF-8: 基於unicode 每個字元一個或兩個位元組
能識別中文的碼錶:GBK、UTF-8
常見的編碼 GBK UTF-8 ISO-8859-1
文字--->(數字) :編碼 “abc”.getBytes() byte[]
(數字)--->文字 : 解碼 byte[] b={97,98,99} new String(b,0,len)
ANSI:系統編碼
位元組流 In 字元流 要重新整理Reader
抽象類 OutputStream Writer
| / \
實現類 FileOutputStream + OutputStreamWriter = FileWriter
| \ 編碼 |
緩衝流 BufferedOutputStream PrintStream BufferedWriter
位元組流(圖片)
FileOutputStream FileInputStream
public static void method01() throws IOException{
//FileOutputStream fos=new FileOutputStream(file);//傳入File物件
//FileOutputStream fos=new FileOutputStream("F:\\a.txt");//建立
FileOutputStream fos=new FileOutputStream("F:\\java\\a.txt",true);/追加
fos.write(97); //寫入位元組 正數:Ascll碼 a 負數:半個漢字 或?
byte[] bytes={97,98,99,100};
fos.write(bytes); // 寫入一個 位元組 陣列
fos.write(bytes,1,1); // 從1開始 長度為1
String str="你好,中國2\r\n"; // 換行:\r\n
fos.write(str.getBytes()); // 字串 轉 位元組陣列 寫入
fos.close();
}
字元流(文字,只能是gbk格式)
public static void main(String[] args) throws IOException {
//FileWriter fw = new FileWriter("d:\\a.txt");//建立輸出流物件
//FileWriter fw = new FileWriter("b.txt");//專案路徑下 建立檔案
FileWriter fw = new FileWriter("c.txt",true); //追加寫入=true
fw.write("helloworld");//寫入字串
fw.write("\r\n");//windows:\r\n linux:\n mac:\r
//fw.flush();//字元需要 重新整理緩衝區
fw.write("abcde",0,5);//寫入字串 起始索引 長度
fw.write('a');//寫入字元char a
fw.write(97);//寫入字元 對應的Ascll碼 a
char[] chs = {'a','b','c','d','e'};
fw.write(chs); //abcde
fw.write(chs,2,3);//寫入字元陣列 起始索引 長度
fw.close();//重新整理緩衝區+釋放資源
}