缓冲流专属和转换流
BufferedReader读,和InputStreamReader转换流联合使用
**BufferedReader:
带有缓冲区的字符输入流。
使用这个流的时候不需要自定义char数组,或者说不需要自定义byte数组。自带缓冲。**BufferedReader的括号里面要求传的是Reader(字符输入流),如果要传字节输入流,就要使用转换流(InputStreamReader),使字节输入流转成字符输入流。
public class BufferedReader读_加转换流 {
public static void main(String[] args) {
BufferedReader br= null;
FileReader fr = null;
FileInputStream fis = null;
InputStreamReader isr = null;
try {
/* 这里面演示的是BufferedReader传入一个Reader
这个构造方法里面只能传入Reader类型的,如果要传入字节输入流,就要用转换流转换
fr = new FileReader("D:\\AJava\\新建文件夹\\aaa");
br = new BufferedReader(fr);*/
//这个构造方法里面只能传入字符输入流类型。传入字节输入流要使用转换流,把字节输入流转换成字符入出流
//演示传入字节输入流 用转换流
//创建字节输入流对象
fis = new FileInputStream("aa");
//创建转换流对象(字节输入转换成字符输入)
isr= new InputStreamReader(fis);
//创建BufferdReader对象
br = new BufferedReader(isr);
/*上面的合并在一起写 也就不用上面的赋值null了
//当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流。外部负责包装的这个流,叫做:包装流,还有一个名字叫做:处理流。
br = new BufferedReader(new InputStreamReader(new FileInputStream("aa")));*/
//readLine()读取一行内容,当读到末尾没有内容的时候,返回null
String aa =null;
while ((aa = br.readLine())!=null){
System.out.println(aa);
}
/*String s = br.readLine();
System.out.println(s);读一行内容*/
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
br.close(); //对于包装流来说,只需要关闭最外层的流就行,里面的节点会自动关闭。
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
BufferedWriter写,和OutputStreamWriter转换流联合使用
**BufferedWriter :带有缓冲的字符输出流。
OutputStreamWriter:转换流。**BufferedWriter 括号里面要求传的是writer(字符输出流),如果要传字节输出流,就要使用转换流(OutputStreaWriter),使字节输出流转换成字符输出流。
public class BufferedWriter写_加转换流 {
public static void main(String[] args) {
BufferedWriter bw =null;
try {
/*传入字符writer类型的输出流
bw = new BufferedWriter(new FileWriter("aa",true));*/
//里面只能传入字符输出流类型。传入字节输出流要使用转换流,把字节输出流转换成字符输出流
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("JAVAse进阶/src/IO流/aa",true)));
bw.write("我是一个大帅哥");
bw.write("\n");
bw.write("你好大帅哥");
//刷新
bw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close(); //关闭最外层
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}