1. 程式人生 > >Java 字元碼、字元流、位元組流

Java 字元碼、字元流、位元組流

字元編碼表

Ascii: 0-xxxxxxx正數

iso-8859-1: 拉丁碼錶1-xxxxxxx  負數。

GB2312: 簡體中文碼錶

GBK: 最常用的中文碼錶 String字串預設

GB18030 最新的中文碼錶

 

unicode 國際標準碼錶 char字元預設 每個字元兩位元組

UTF-8: 基於unicode 每個字元一個或兩個位元組

 

能識別中文的碼錶:GBKUTF-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); //寫入位元組   正數:Asclla 負數:半個漢字 ?

 

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();//重新整理緩衝區+釋放資源

}