緩衝流的作用:解決數據亂碼
緩衝流分爲:
①字符緩衝區流: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();
}
}