文章目录
一、BufferedRead(带有缓冲的字符输入流)
-
带有缓冲区的字符输入流
-
使用这些流的时候不需要自定义char数组,或者说不需要自定义byte数组,自带缓冲。
1、节点流和包装流
- 当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流。
- 外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流。
2、readline :读一行字符
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReadertest1 {
public static void main(String[] args) throws IOException {
//对于这个程序来说:FileReader就是一个节点流,BufferedReader就是一个包装流/处理流。
FileReader reader = new FileReader("src/Copy01.java");
BufferedReader br = new BufferedReader(reader);
//读一行
String firstLine = br.readLine();
System.out.println(firstLine);
String secondLine = br.readLine();
System.out.println(secondLine);
String thirdLine = br.readLine();
System.out.println(thirdLine);
String s = null;
while((s = br.readLine()) != null){
System.out.println(s);
}
//关闭流
//对于包装流来说,只需要关闭最外层流就行,里面的节点流会自动关闭。
br.close();
}
}
二、转换流(InputStreamReader与OutputStreamWriter)
这里只演示InputStreamWriter
的转换流:OutputStreamWriter
在BufferedWrite
中演示
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
public class BufferedReaderTest2 {
public static void main(String[] args) throws Exception {
/* //字节流
FileInputStream in = new FileInputStream("");
//通过转换流转换
//in是节点流,reader是包装流
InputStreamReader reader = new InputStreamReader(in);
//这个构造方法只能传一个字符流,不能传字节流
//reader是节点流,br是包装流
BufferedReader br = new BufferedReader(reader);*/
//合并
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("src/Copy01.java")));
String line = null;
while ((line = br.readLine()) != null){
System.out.println(line);
}
//关闭最外层
br.close();
}
}
三、BufferedWrite:(带有缓冲的字符输出流)
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class BufferedWriteTest {
public static void main(String[] args) throws IOException {
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("temp")));
out.write("hello world");
out.write("\n");
out.write("hello kitty");
out.flush();
out.close();
}
}