Java缓冲流、转换流、节点流、处理流
一、BufferrReader(带有缓冲区的字符输入流)
- 使用这个流的时候不需要自定义char[ ] 数组,或者说不需要自定义char[ ] 数组。自带缓冲
1.构造方法
方法名 | 作用 |
---|---|
BufferedReader(Reader in) | 创建使用默认大小的输入缓冲区的缓冲字符输入流。 |
BufferedReader(Reader in, int sz) | 创建使用指定大小的输入缓冲区的缓冲字符输入流。 |
2.节点流与包装流
- 当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流。
- 外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流。
3.代码示例:
import java.io.BufferedReader;
import java.io.FileReader;
public class BufferedReaderTest01 {
public static void main(String[] args) throws Exception {
FileReader reader = new FileReader("D://JAVATest/filewrite");
//当一个外部的流的构造方法需要一个流的时候,这个被传进来的流叫做;节点流
//外部负责包装的这个流,叫做:包装流或者叫做处理流
//像当前这个程序来说:FileReader就是一个节点流,BufferedReader就是包装流/处理流
BufferedReader br = new BufferedReader(reader);
String s=null;
while ((s= br.readLine())!=null){
System.out.println(s);
}
//可以使用readLine方法一次读取一行
/*
如果不写循环,因为定义的是
String fistLine= br.readLine();
System.out.println(fistLine);
String SecondLine= br.readLine();
System.out.println(SecondLine);
String ThirdLine= br.readLine();
System.out.println(ThirdLine);
*/
//关闭包装流
//对于包装流来说只需要关闭最外层的流,里面的节点流会自动关闭
br.close();
}
}
输出:
我最爱学习了
学习了
没有对象不会new一个吗
二、转换流
- 在上述字符流中只能传字符,要是想传入字节的话,需要先将字节流转换成字符流,这时就需要使用到转换流
- InpStreamReader转换读取到的字节
1.构造方法:
InputStreamReader(InputStream in) | 创建一个使用默认字符集的InputStreamReader |
InputStreamReader(InputStream in, Charset cs) | 创建一个使用给定字符集的InputStreamReader。 |
InputStreamReader(InputStream in, CharsetDecoder dec) | 创建一个使用给定字符集解码器的InputStreamReader。 |
InputStreamReader(InputStream in, String charsetName) | 创建一个使用命名字符集的InputStreamReader。 |
2.代码示例
import java.io.*;
public class BufferedReaderTest02 {
public static void main(String[] args) throws IOException {
//字节流
FileInputStream in = new FileInputStream("D:\\JAVATest\\bufferedReader");
//通过转换流(InputStreamReader)转换为字符流
//in是节点流,reader是包装流
InputStreamReader reader = new InputStreamReader(in);
//reader是节点流,br是包装流/处理流
BufferedReader br = new BufferedReader(reader);
/*
上述也可以合并来写
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("D:\\JAVATest\\bufferedReader")))
*/
String s=null;
while ((s=br.readLine())!=null){
System.out.println(s);
}
//关闭最外层
br.close();
}
}
输出:
lingstar
我最爱java了
这是带有缓冲区的字符输出流
三、BufferWriter(带有缓冲区的字符输出流)
1.构造方法
方法名 | 作用 |
---|---|
BufferedWriter(Writer out) | 创建使用默认大小的输出缓冲区的缓冲字符输出流 |
BufferedWriter(Writer out, int sz) | 创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。 |
2.代码示例
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferWriterTest02 {
public static void main(String[] args) throws IOException {
//创建一个字符输出流,没有文件会自动创建
//再次运行会清空重新写入,如果不想清空就在后面路径后加,true
BufferedWriter out = new BufferedWriter(new FileWriter("D:/JAVATest/bufferedtest"));
//写入
out.write("我最爱java了");
out.write("\n");
out.write("lingstar");
//刷新
out.flush();
//关闭最外层
out.close();
}
}
输出:
本文来自博客园,作者:星余明,转载请注明原文链接:https://www.cnblogs.com/lingstar/p/16512109.html