BufferedInputStream;
BufferedOutputStream;
BufferedWriter;带缓冲区的字符输入流
BufferedReader;带缓存区的字符输出流
java.io.Reader
java.io.BufferedReader
构造方法(summary filed):BufferedReader(reader in);
所以在使用BufferedReader之前,要先创建Reader,但是记住Reader是一个抽象类,用他的子类FileReader来实例化
import java.io.*;
public class BufferReaderTest {
public static void main(String[] args) throws Exception{
//创建一个带有缓冲区的字符输入流
FileReader n1 = new FileReader("D:\\eclispe\\Io流\\src\\fileReader\\FileReaderTest.java");//创建一个文件字符输入流
BufferedReader n2 = new BufferedReader(n1);//包装,将文件字符输入流包装成带有缓冲区的字符输入流
/*
* 根据流出现的位置,流又可以分为:包装流或者处理流 和 节点流 FileReader n1 节点流 BufferedReader n2 包装流
*/
//开始读
String temp = null;
while((temp = n2.readLine())!=null) {
System.out.println(temp); //n2.readLine()读一行,但是行尾不会带换行符,所以如果用System.out.print();输出的时候读到不同行都不会换行,会显示在一行
}
//关闭的时候,只需要关闭最外层的包装流。(这里有一个装饰者模式(一种设计模式))
n2.close();
}
}
字节到字符的转换,如果想把一个字节输入流放入BufferedRead中,涉及到字节流转字符流
InputStreamReader :字节转字符的转换流
//字节到字符的转换,如果想把一个字节输入流放入BufferedRead中,涉及到字节流转字符流
FileInputStream f1 = new FileInputStream("D:\\eclispe\\Io流\\src\\fileReader\\FileReaderTest.java");
//输入字节流转输入字符流 InputStreamReader
InputStreamReader f2 = new InputStreamReader(f1);
//放入缓冲区
BufferedReader f3 = new BufferedReader(f2);
//简易写法
BufferedReader f4 = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\eclispe\\Io流\\src\\fileReader\\FileReaderTest.java")));
String ns = null;
while((ns = f3.readLine())!=null) {
System.out.println(ns);
}
//关闭掉最外层的流即可
f3.close();
}
接收用户键盘输入
class Test{
public static void main(String[] args){
//传统的方法
//System下的静态方法 in,会返回一个InputStream
Scanner sr = new Scanner(System.in);
sr.next(); //Scanner下的next方法,会返回一个字符串,返回我们输入的字符串
//使用BufferedReader来接收用户的输入
BufferedReader se = new BufferedReader(new InputStreamReader(System.in));
//接收每次接收一行
String sd =se.readLine();
System.out.println(sd);
以上传统方法和现在方法相比:比如输入hello world
传统只会输出hello 因为以‘空格’作为区分
新方法会输出hello world 因为一次读一行
}
}