国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

InputStreamReader和BufferedReader用法及實例講解

2019-11-26 14:44:07
字體:
供稿:網(wǎng)友

一、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é)流通向字符流的橋梁,封

主站蜘蛛池模板: 北海市| 类乌齐县| 容城县| 山西省| 丰宁| 泽库县| 榆林市| 桑植县| 光山县| 永顺县| 修文县| 蓬安县| 巴林左旗| 乌拉特中旗| 绍兴县| 新龙县| 大厂| 遂川县| 正蓝旗| 昭苏县| 开平市| 庐江县| 沿河| 辉县市| 黑水县| 岐山县| 黄浦区| 安徽省| 张家口市| 龙井市| 泌阳县| 新邵县| 铜山县| 南京市| 华亭县| 武安市| 扶绥县| 阜新| 西安市| 罗甸县| 长沙市|