`

InputStreamReader和BufferedReader用法及真实案例

阅读更多

一、BufferedReader类

 

.所属类库:

 

         java.lang.Object 

 

              java.io.Reader 

 

                         java.io.BufferedReader

 

.基本概念

 

 

           public class BufferedReader   extends Reader

 

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值足够大。

 

通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader包装所有其 read() 操作可能开销很高的 Reader(如 FileReaderInputStreamReader)。

 

BufferedReader流能够读取文本行,通过向BufferedReader传递一个Reader对象,来创建一个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是字节流通向字符流的桥梁

 

 

二、InputStreamReader类

InputStreamReader 将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

构造方法

    InputStreamReader isr = new InputStreamReader(InputStream in);//构造一个默认编码集的InputStreamReader类

    InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);//构造一个指定编码集的InputStreamReader类。
   
    参数 in对象通过 InputStream in = System.in;获得。//读取键盘上的数据。

    或者 InputStream in = new FileInputStream(String fileName);//读取文件中的数据。可以看出 FileInputStream 为InputStream的子类。

主要方法:int read();//读取单个字符。
                 int read(char []cbuf);//将读取到的字符存到数组中。返回读取的字符数。

.Demo

import java.io.*;
class InputStreamReaderDemo {
	public static void transReadNoBuf() throws IOException {
		/**
		 * 没有缓冲区,只能使用read()方法。
		 */
		//读取字节流
		//InputStream in = System.in;//读取键盘的输入。
		InputStream in = new FileInputStream("D:\\demo.txt");//读取文件的数据。
		//将字节流向字符流的转换。要启用从字节到字符的有效转换,
		//可以提前从底层流读取更多的字节.
		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 {
		/**
		 * 使用缓冲区 可以使用缓冲区对象的 read() 和  readLine()方法。
		 */
		//读取字节流
		//InputStream in = System.in;//读取键盘上的数据
		InputStream in = new FileInputStream("D:\\demo.txt");//读取文件上的数据。
		//将字节流向字符流的转换。
		InputStreamReader isr = new InputStreamReader(in);//读取
		//创建字符流缓冲区
		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;
	}
}

 

 

 

5
5
分享到:
评论

相关推荐

    Java软件开发实战 Java基础与案例开发详解 13-6 转换流 共6页.pdf

    这个过程涉及到了`InputStreamReader`和`BufferedReader`的使用: ```java import java.io.*; public class ConvertStreamExample { public static void main(String[] args) { // 创建一个InputStreamReader...

    java io案例

    在实际案例中,常常会结合使用字节流和字符流,例如,使用InputStreamReader将字节流转换为字符流,再通过BufferedReader进行高效读取。 `整合练习2`这个文件可能包含了一些具体的IO流操作示例,比如文件的复制、...

    Android Socket案例包括客户端和服务端

    3. **数据传输**:使用BufferedReader和PrintWriter对输入/输出流进行包装,实现字符数据的读写。例如,`BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));` 和 `...

    android 服务器+客户端的简单案例

    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { ...

    火山安卓编码转换案例.rar

    2. **InputStream与OutputStream的转换**:在读取文件或网络流时,我们通常使用`InputStreamReader`和`BufferedReader`来读取字节流并转换为字符流,同时指定相应的编码。写入时则使用`OutputStreamWriter`和`...

    Java中IO解读与使用实例-动力节点共17页.pdf

    这段代码首先创建FileReader实例,然后通过它创建BufferedReader,使用readLine()方法逐行读取文件内容。 总结,Java IO是Java编程中处理输入输出的核心技术,涵盖广泛且功能强大。理解和熟练运用IO流,对于开发...

    Java Socket套接字编程文集.chm

    总结,Java Socket套接字编程文集详细阐述了如何使用Java进行网络编程,涵盖了Socket的基本概念、使用方法、异常处理、多线程应用以及实战案例。通过学习,开发者可以熟练地运用Socket构建各种网络应用程序,提升其...

    Java笔试试卷3.pdf

    7. Java I/O类:涉及到InputStreamReader和BufferedReader等用于输入流的类,这些是Java中处理文件和网络输入输出的核心类库。 8. 标准库的使用:在代码中出现了导入标准库的语句(import java.awt.*;),这表明了...

    java基于线程的socket简单聊天室案例

    客户端通过`Socket`对象与服务器建立连接,并使用`PrintWriter`和`BufferedReader`进行数据的发送与接收。 #### 三、总结 本案例展示了如何使用Java实现一个基本的聊天室功能。通过Socket通信技术与多线程机制,...

    java网络编程实例原文件代码

    Java提供了多种I/O流类,如InputStreamReader、BufferedReader和PrintWriter,用于在字节流和字符流之间转换,实现数据的正确传输。 5. **异常处理**: 网络通信中可能会出现各种异常,如连接中断、数据传输错误等...

    进程交互案例

    在实际的"进程交互案例"中,如标题所示,我们可能会使用类似`collect_vUSN_data`和`collect_vUGW_data`这样的脚本或程序来收集特定的数据。通过上述Java的进程交互方式,我们可以控制这些进程的启动、读取它们的输出...

    JAVA记事本程序源代码

    Java的java.io包提供了InputStreamReader、BufferedReader、FileWriter等类用于读取和写入文件。例如,使用FileReader和BufferedReader组合读取文件,使用FileWriter和BufferedWriter组合写入文件。 4. **文本处理*...

    Java Http请求案例

    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuilder content = new StringBuilder(); while ((inputLine = in.readLine()) != null) {...

    SSH2整合小案例

    BufferedReader reader = new BufferedReader(new InputStreamReader(channel.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } channel....

    java之io流实例

    - BufferedReader和BufferedReader提供了缓冲功能,可以一次读取多个字符,减少系统调用次数。 - PrintWriter提供格式化输出的功能,可以方便地进行字符串、数值的输出。 3. 转换流: - InputStreamReader和...

    Java语言程序设计案例教程.ppt

    为了深入理解 Java 网络编程,你需要学习如何创建和管理 Socket 连接,使用 `InputStreamReader` 和 `BufferedReader` 读取数据,使用 `PrintWriter` 或 `DataOutputStream` 发送数据,以及如何处理网络错误和断开...

    java网络聊天室

    此外,为了实现聊天功能,开发者可能使用了字符串流(InputStreamReader和BufferedReader)进行数据读取,以及PrintWriter进行数据写入。在网络通信中,数据通常以文本或字节的形式传输,因此可能还需要对字符编码...

    Java软件开发实战 Java基础与案例开发详解 19-2 Java网络类和接口 共5页.pdf

    ### Java网络类和接口 #### 19.2 Java网络类和接口 Java作为一种广泛使用的编程语言,在网络编程方面提供了强大的支持。...了解并掌握这些类和接口的使用方法对于进行高效的Java网络编程至关重要。

    java jdk经典实例

    2. **类与对象**:Java是一种面向对象的语言,类的定义、对象的创建及方法的使用是核心概念。理解封装、继承和多态等面向对象特性至关重要。 3. **异常处理**:Java提供了异常处理机制,用try-catch-finally语句块...

Global site tag (gtag.js) - Google Analytics