Java重点 | IO流中的缓冲流专属和转换流专属
【摘要】 经过上篇文章,我们已经学会了IO流中的文件专属流,那么我们继续学习,本文将详细介绍缓冲流专属和转换流专属的配合使用。主要是从下面两个方面讲解,BufferedReader读,和InputStreamReader转换流联合使用,和BufferedWriter写,和OutputStreamWriter转换流联合使用。那么让我们来一起学习吧。
缓冲流专属和转换流
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();
}
}
}
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)