字節流: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=流+正則表達式,方法都是按照某種規則在讀取數據。