缓冲流的作用:解决数据乱码
缓冲流分为:
①字符缓冲区流:BufferedReader、BufferedWriter
②字节缓冲区流:BufferedInputStream、BufferedOutputStream
以上4个操作类中,最重要的就是BufferedReader类,属于字符缓冲输入流,要处理中文数据,字符流是最方便的。BuferedReader是Reader的子类。
构造方法:public BufferedReader(Reader in)-----设置字符输入流
普通方法:public String readLine() throws IOException ------读取一行文字,默认以"\n"为分隔符
用BufferedReader读取数据,并判断输入内容是年龄:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class TestBufferedReader {
public static void main(String[] args) throws Exception{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
boolean flag = true;
while(flag){
System.out.println("请输入年龄:");
String str =buf.readLine();
if(str.matches("\\d{1,3}")){
System.out.println("年龄是:"+Integer.parseInt(str));
}else{
System.out.println("年龄输入有误,年龄由数字组成");
}
}
}
}
用BufferedReader来处理System.in就必须将InputStream类型转换为Reader类型,可以利用InputStreamReader类来实现这一操作。(因为BufferedReader的构造方法中,接受了Reader类型,而System.in是InputStream类型)
字符缓冲流不但可以接收输入信息,还可以进行文件的读取。
读取文件:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class Test3{
public static void main(String[] args) throws Exception{
File file = new File("D:"+ File.separator + "demo.txt");
BufferedReader buf = new BufferedReader(new FileReader(file));
String str = null;
while((str = buf.readLine())!= null){
System.out.println(str);
}
buf.close();
}
}