JavaSE教程_进阶
字符缓冲流
默认有8192字符大小的缓冲区
package com.wkcto.chapter06.readerwriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilterWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
/**
* BufferedReader/BufferedWriter
* 字符缓冲流, 对其他字符流进行缓冲, 默认缓冲区大小为8192个字符
* @author 蛙课网
*
*/
public class Test05 {
public static void main(String[] args) throws IOException {
//1) 使用缓冲字符流读取文件的内容
// readData();
//2) 使用缓冲字符流保存数据到文件中
writeData();
}
//2) 使用缓冲字符流保存数据到文件中
private static void writeData() throws IOException {
FileWriter fw = new FileWriter("d:/def.txt");
BufferedWriter bw = new BufferedWriter(fw);
//把数组保存到缓冲流的缓冲区中
bw.write("hello");
bw.newLine();
bw.write("wkcto");
//从键盘上输入数据保存到文件中
// Scanner sc = new Scanner(System.in);
//System.in代表系统的标准输入设备,即键盘, System类的in字段是InputStream字节流
// String line = sc.nextLine(); //从键盘上读取一行
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
while( line.length() > 0 ){
bw.write(line);
bw.newLine();
// line = sc.nextLine();
line = br.readLine();
}
bw.close(); //关闭缓冲流时,会把缓冲区的数据保存到文件中
}
//1) 使用缓冲字符流读取文件的内容
private static void readData() throws IOException {
//创建字符流, d:/test.java文件, 该文件编码为utf-8,与当前环境编码一致
// FileReader fr = new FileReader("d:/test.java");
//创建字符流, d:/test01.java文件, 该文件编码为GBK,与当前环境编码不一致
InputStreamReader fr = new InputStreamReader(new FileInputStream("d:/test01.java"), "GBK");
//对字符流进行缓冲
BufferedReader br = new BufferedReader(fr);
//从缓冲字符流中读取数据, readLine()从输入缓冲字符流中读取一行, 读到文件末尾返回null
String line = br.readLine();
while( line != null ){
System.out.println( line);
line = br.readLine();
}
br.close();
}
}