io-字符缓冲流BufferedRead-转换流InputStreamRead
BufferedRead
1、带缓冲的字符输入流,使用时不需要自定义char 数组自带缓冲
2、包装流:当一个流的构造方法中,需要另外一个流的时候,被传来的叫做:节点流;
3、节点流:外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流。
4、方法:readLine 读一行,但不带换行符;
6、包装流,节点流关闭资源的时候,只需要:关闭最外层的包装流即可
import java.io.BufferedReader; import java.io.FileReader; /* BufferedReader: 带有缓冲区的字符输入流。使用这个流的时候不需要自定义char数组, 或者说不需要自定义byte数组。自带缓冲。 */ public class BufferedReaderTest01 { public static void main(String[] args) throws Exception{ FileReader reader = new FileReader("Copy02.java"); // 当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流。 // 外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流。 // 像当前这个程序来说:FileReader就是一个节点流。BufferedReader就是包装流/处理流。 BufferedReader br = new BufferedReader(reader); // br.readLine()方法读取一个文本行,但不带换行符(println)。 //System.out.print(s);输出后可以证明 String s = null; while((s = br.readLine()) != null){ System.out.println(s); } // 关闭流 // 对于包装流来说,只需要关闭最外层流就行, //里面的节点流会自动关闭。(可以看源代码。) br.close(); } }
转换流:
InputStreamRead
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; /* 转换流:InputStreamReader */ public class BufferedReaderTest02 { public static void main(String[] args) throws Exception{ // 字节流 FileInputStream in = new FileInputStream("Copy02.java"); // 通过转换流转换(InputStreamReader将字节流转换成字符流。) // in是节点流。reader是包装流。 InputStreamReader reader = new InputStreamReader(in);// 这个构造方法只能传一个字符流。不能传字节流。 // reader是节点流。br是包装流。 BufferedReader br = new BufferedReader(reader); // 合并 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("Copy02.java"))); String line = null; while((line = br.readLine()) != null){ System.out.println(line); } // 关闭最外层 br.close(); } }
BufferedWriter:带有缓冲的字符输出流。
OutputStreamWriter:转换流
import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.OutputStreamWriter; /* BufferedWriter:带有缓冲的字符输出流。 OutputStreamWriter:转换流 */ public class BufferedWriterTest { public static void main(String[] args) throws Exception{ // 带有缓冲区的字符输出流 //BufferedWriter out = new BufferedWriter(new FileWriter("copy")); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("copy", true))); // 开始写。 out.write("hello world!"); out.write("\n"); out.write("hello kitty!"); // 刷新 out.flush(); // 关闭最外层 out.close(); } }