1、BufferedReaderDemo.java
package org.algorithm;
import java.io.*;
/*
* (为了读取)
* public class BufferedReader extends Reader
*
* 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高校读取;
* 可以指定缓冲区的大小,或者可使用默认的大小。
*
* BufferedReader 流能够读取文本行 , 通过向 BufferedReader 传递一个 Reader 对象 ,
* 来创建一个 BufferedReader 对象 , 之所以这样做是因为 FileReader 没有提供读取文本行的功能 .
* */
public class BufferedReaderDemo {
/*
* InputStreamReader 和 BufferedReader 的区别
* */
public static void main(String[] args) throws IOException {//throws IOException抛出异常
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一些列文字,可包括空格:");
String text = bufferedReader.readLine();
System.out.println("请输入文字:"+text);
}
/*
* throws IOException 抛出异常
*
* InputStreamReader 是字节流通向字符流的桥梁
* */
}
2、InputStreamReaderDemo.java
package org.algorithm;
import java.io.*;
/*
* (为了输入)
*
* InputStreamReader:将字节流转换成字符流,是字节流向字符流转换的桥梁。
* 由于文本文件中存放的都是字节流,而程序中需要的是字符流,所以使用InputStreamReader来
* 将文本文件转换成字符流,有利于进一步的操作。
*
* //构造一个默认编码集的InputStreamReader类
* InputStreamReader isr = new InputStreamReader(InputStream in);
*
* //构造一个指定编码集的InputStreamReader类
* InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);
*
* //读取键盘上的数据
* 参数 in对象通过 InputStream in = System.in;
*
* //读取文件中的数据
* 或者 InputStream in = new FileInputStream(String fileName);
* 可以看出 FileInputStream 为InputStream的子类
*
* //读取单个字符
* int read();
*
* ;//将读取到的字符存到数组中。返回读取的字符数
* int read(char []cbuf);
*
* */
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();
}
}
3、Instance
package org.algorithm;
import java.io.*;
class UtilResource {
private static void initializeResource() {
try {
//读取文件,并且以utf-8的形式写出去
BufferedReader bufread;
String read;
bufread = new BufferedReader(new InputStreamReader(new FileInputStream("e:\\input.txt")));
/*
* FileInputStream("e:\\input.txt"): 用于输入文本文件
*
* InputStreamReader(new FileInputStream("e:\\input.txt")): 用于将文本文件的字节流转换为字符流
*
* BufferedReader(new InputStreamReader(new FileInputStream("e:\\input.txt"))):用于缓冲字符,便于高效读取
* */
while ((read = bufread.readLine()) != null) {
System.out.println(read);
}
bufread.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static void main(String args[]){
initializeResource();
}
}
本文介绍了 Java 中 BufferedReader 和 InputStreamReader 的使用方法,展示了如何利用这些类从文件或标准输入读取文本数据。通过示例代码解释了如何进行字符流的转换及高效读取。
407

被折叠的 条评论
为什么被折叠?



