一、BufferedReader類
. 所屬類庫:
java.lang.Object
java.io.Reader
java.io.BufferedReader
. 基本概念 :
public class BufferedReader extends Reader
從字符輸入流中讀取文本,緩沖各個字符,從而實現(xiàn)字符、數(shù)組和行的高效讀取。 可以指定緩沖區(qū)的大小,或者可使用默認(rèn)的大小。大多數(shù)情況下,默認(rèn)值足夠大。
通常, Reader 所作的每個讀取請求都會導(dǎo)致對底層字符或字節(jié)流進行相應(yīng)的讀取請求。因此,建議用 BufferedReader 包裝所有其 read() 操作可能開銷很高的 Reader (如 FileReader 和 InputStreamReader )。
BufferedReader 流能夠讀取文本行 , 通過向 BufferedReader 傳遞一個 Reader 對象 , 來創(chuàng)建一個 BufferedReader 對象 , 之所以這樣做是因為 FileReader 沒有提供讀取文本行的功能 .
. Demo :
通過 Bufferedreader 捕獲所輸入的語句 :
import java.io.*;class BufferedReaderDemo{ public static void main(String[] args)throws IOException { BufferedReader bufferedReader =new BufferedReader( new InputStreamReader(System.in)); System.out.print("請輸入一系列文字,可包括空格:"); String text =bufferedReader.readLine(); System.out.println("請輸入文字:"+text); } }
注解:
throws IOException 拋出異常
InputStreamReader 是字節(jié)流通向字符流的橋梁
二、InputStreamReader類
InputStreamReader 將字節(jié)流轉(zhuǎn)換為字符流。是字節(jié)流通向字符流的橋梁。如果不指定字符集編碼,該解碼過程將使用平臺默認(rèn)的字符編碼,如:GBK。
構(gòu)造方法 :
InputStreamReader isr = new InputStreamReader(InputStream in);//構(gòu)造一個默認(rèn)編碼集的InputStreamReader類
InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);//構(gòu)造一個指定編碼集的
InputStreamReader類。
參數(shù) in對象通過 InputStream in = System.in;獲得。//讀取鍵盤上的數(shù)據(jù)。
或者 InputStream in = new FileInputStream(String fileName);//讀取文件中的數(shù)據(jù)。可以看出 FileInputStream 為InputStream的子類。
主要方法 :int read();//讀取單個字符。
int read(char []cbuf);//將讀取到的字符存到數(shù)組中。返回讀取的字符數(shù)。
. Demo :
import java.io.*;class InputStreamReaderDemo { public static void transReadNoBuf() throws IOException { /** * 沒有緩沖區(qū),只能使用read()方法。 */ //讀取字節(jié)流 //InputStream in = System.in;//讀取鍵盤的輸入。 InputStream in = new FileInputStream("D://demo.txt");//讀取文件的數(shù)據(jù)。 //將字節(jié)流向字符流的轉(zhuǎn)換。要啟用從字節(jié)到字符的有效轉(zhuǎn)換, //可以提前從底層流讀取更多的字節(jié). InputStreamReader isr = new InputStreamReader(in);//讀取 //綜合到一句。 //InputStreamReader isr = new InputStreamReader( //new FileInputStream("D://demo.txt")); char []cha = new char[1024]; int len = isr.read(cha); System.out.println(new String(cha,0,len)); isr.close(); } public static void transReadByBuf() throws IOException { /** * 使用緩沖區(qū) 可以使用緩沖區(qū)對象的 read() 和 readLine()方法。 */ //讀取字節(jié)流 //InputStream in = System.in;//讀取鍵盤上的數(shù)據(jù) InputStream in = new FileInputStream("D://demo.txt");//讀取文件上的數(shù)據(jù)。 //將字節(jié)流向字符流的轉(zhuǎn)換。 InputStreamReader isr = new InputStreamReader(in);//讀取 //創(chuàng)建字符流緩沖區(qū) BufferedReader bufr = new BufferedReader(isr);//緩沖 //BufferedReader bufr = new BufferedReader( //new InputStreamReader(new FileInputStream("D://demo.txt")));可以綜合到一句。 /*int ch =0; ch = bufr.read(); System.out.println((char)ch); */ String line; while((line = bufr.readLine())!=null){ System.out.println(line); } isr.close(); }}
三、InputStreamReader、BufferedReader真實案例(非編碼集)
import java.io.*;class UtilResource { private void initializeResource() { try { //讀取文件,并且以utf-8的形式寫出去 BufferedReader bufread; String read; bufread = new BufferedReader(new InputStreamReader(ResourceHelper .getResourceInputStream("pinyin.txt"))); while ((read = bufread.readLine()) != null) { System.out.println(read); } bufread.close(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } }}
注:其中 pinyin.txt 放于項目的根目錄下
import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;class ResourceHelper { /** * @param resourceName * @return * @return */ static BufferedInputStream getResourceInputStream(String resourceName) { try { return new BufferedInputStream(new FileInputStream(resourceName)); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }}
總結(jié):
InputStreamReader 類
是字節(jié)流通向字符流的橋梁,封 主站蜘蛛池模板: 北海市| 类乌齐县| 容城县| 山西省| 丰宁| 泽库县| 榆林市| 桑植县| 光山县| 永顺县| 修文县| 蓬安县| 巴林左旗| 乌拉特中旗| 绍兴县| 新龙县| 大厂| 遂川县| 正蓝旗| 昭苏县| 开平市| 庐江县| 沿河| 辉县市| 黑水县| 岐山县| 黄浦区| 安徽省| 张家口市| 龙井市| 泌阳县| 新邵县| 铜山县| 南京市| 华亭县| 武安市| 扶绥县| 阜新| 西安市| 罗甸县| 长沙市|