IO流(2)



字節流:FileInputStream 讀取字節流
第一種讀取方式:
FileInputStream fis = new FileInputStream(file);
 int by =0;
 while((by=fis.read())!=-1){
  System.out.println(by);
 }

第二種讀取方式: read(byte[]);
byte[] buf = new byte[2];
int lent=0;
while((len = fis.read(buf)!=-1){
 System.out.println(new String(buf,0,len));
}
緩衝區大小:
byte[] buf = new byte(fis.available());//創建了一個和文件大小一樣的緩衝區
fis.read(buf);
String s= new String (buf);


字節流的緩衝區對象:

 FileInputStream fis = new FileInputStream("teamp\\.1.jpg");
 BufferedInputStream bufis = new BufferedInputStream(fis);//對流進行 緩衝
 FileOutputStream fos = new FileOutputStream("teamfile\\copy.txt");
  BufferedOutputStream bufos = new BufferedOutputStream(fos);//對流進行 緩衝

 bufos.flush(); //緩衝流的刷新

***操作中文數據****
讀取中文,按照字節的形式,但是一箇中文GBK碼錶中是兩個字節
 而且字節流的read方法一次讀取一個字節,如何獲取到一箇中文?
  別讀一個就操作,多讀一些存起來,再操作,存到字節數組中,將字節數組轉成字符串

 String s = new String (bus,0,len);//將字節數組轉成字符串,而且是按照默認的編碼表(GBK)進行解碼


***編碼表****
Unnicode:  
     標識頭信息
0.......  1個字節
110......  10 ...   2 個字節
1110......  10....  10 ..    三個字節

中文編碼表: 兩個字節開頭都是 1 
GBK: 第一個是1開頭, 第二個是0開頭


*** InputStreamReader ***********
 InputStreamReader是字節流通向字符流的橋樑,它使用指定的 charset 讀取字節並解碼爲字符

 InputStreamReader isr = new InputStreamReader(fis);
 int ch = isr.read();
System.out.println((char)ch);


***** OutputStreamWriter  *****
 OutputStreamWriter  是字符流通向字節流的橋樑,它使用指定的 charset 讀取字符並編碼爲字節

 OutputStreamWriter osw = new OutputStreamWiter(fos);
  osw.writr("你好");
 //關閉資源。 flush()刷新完,流可以繼續使用,close刷新完,直接關閉,流結束了,不能再寫

 字符流=字節流+編碼表

*** 轉換流的子類,
  專門用於操作文本文件的流對象。
FileWriter fw = new FileWriter("tempfile\\fw.txt");
 fw.write("你好");

read:
 FileReader  fr = new FileReader("tempfile\\fw.txt");
  int ch =0;
 while((ch=fr.read())!=-1){
   System.out.println((char)ch);
 }

對字符進行操作要選選擇字符流。
 

BufferedWriter:
 FileWriter fw = new FileWriter("tempfile\\bufw.txt");
 BufferedWriter bufw = new BufferedWriter(fw);
   bufw.write("abc");


*** 讀取鍵盤錄入:
  BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  bufr.readLine();   // 一次讀一行

 Scanner=流+正則表達式,方法都是按照某種規則在讀取數據。

發佈了56 篇原創文章 · 獲贊 14 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章