深入理解JAVA IO流2022-08-05 09:04·Java开发技术分享目录1.字符输入流BufferedReader
2.字符输出流BufferedWriter
聾缓冲流(1)带有缓冲区的字符输入流;使用这个流的时候 不需要自定义char数组 , 或者说不需要自定义byte数组;自带缓冲!
(2)读取数据时 , 可以一次性读取一行
(3)这里只讲解字符缓冲流: java.io.BufferedReader 和 java.io.BufferedWriter ;字节缓冲流使用方法是一样的
(4)BufferedReader和BufferedWriter都是包装流!1.字符输入流BufferedReaderpackage com.bjpowernode.java.io;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;public class BufferedReaderTest01 {public static void main(String[] args) throws Exception {FileReader reader = new FileReader("file");// 当一个流的构造方法中需要一个流的时候 , 这个被传进来的流叫做:节点流 。// 外部负责包装的这个流 , 叫做:包装流或者叫做:处理流 。// FileReader就是一个节点流 。BufferedReader就是包装流/处理流 。BufferedReader br = new BufferedReader(reader); // 只能传字符流// 优点:一次能读一行;但不带换行符!String s = null;while((s = br.readLine()) != null){ // br.readLine()返回的是一个字符串System.out.println(s);}// 关闭流,只需要关闭最外层流就行 , 里面的节点流会自动关闭 。br.close();}}
2.字符输出流BufferedWriterpackage com.bjpowernode.java.io;import java.io.*;public class BufferedWriterTest01 {public static void main(String[] args) throws IOException {// 创建带有缓冲区的字符输出流BufferedWriter writer = new BufferedWriter(new FileWriter("file"));// 开始写writer.write("hello world!");writer.write("n");writer.write("hello kitty!");// 刷新writer.flush();// 关闭最外层writer.close();}}
聾转换流1.OutputStreamWriterBufferedWriter:带有缓冲的字符输出流 。OutputStreamWriter:转换流
package com.bjpowernode.java.io;import java.io.*;public class BufferedWriterTest01 {public static void main(String[] args) throws IOException {// 创建带有缓冲区的字符输出流BufferedWriter writer = new BufferedWriter(new FileWriter("file"));// 如果想要使用字节输出流 , 还是需要OutputStreamWriter进行流的转换// 如果使用的是字节流OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("file"));BufferedWriter writer1 = new BufferedWriter(osw);// 合并在一起BufferedWriter writer1 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("file")));// 开始写writer.write("hello world!");writer.write("n");writer.write("hello kitty!");// 刷新writer.flush();// 关闭最外层writer.close();}}
2.InputStreamReaderBufferedReader(reader) , 里面只能传字符流;那如果是字节流怎么办呢?
package com.bjpowernode.java.io;import java.io.*;public class BufferedReaderTest02 {public static void main(String[] args) {FileInputStream fis = null;try {// 字节流fis = new FileInputStream("file");// 通过转换流转换(InputStreamReader将字节流转换成字符流)// fis是节点流 。reader是包装流 。InputStreamReader reader = new InputStreamReader(fis);// 把转换成字符流的字节流 , 传过来// reader是节点流 。br是包装流 。BufferedReader br = new BufferedReader(reader);// 上面进行合并BufferedReader br1 = new BufferedReader(new InputStreamReader(new FileInputStream("file")));// 进行打印String s = null;while((s = br1.readLine()) != null){System.out.println(s);}// 关闭br.close(); // 关闭最外层} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (fis != null) {try {fis.close();} catch (IOException e) {e.printStackTrace();}}}}}
聾数据流1.DataOutputStream(1)java.io.DataOutputStream:数据专属的流;也是一个包装流!
(2)这个流可以 将数据连同数据的类型一并写入文件。
(3)注意:这个文件不是普通文本文档 。(这个文件使用记事本打不开)
package com.bjpowernode.java.io;import java.io.DataOutputStream;import java.io.FileOutputStream;public class DataOutputStreamTest01 {public static void main(String[] args) throws Exception{// 创建数据专属的字节输出流(写)DataOutputStream dos = new DataOutputStream(new FileOutputStream("file")); //生成的这个文件 , 记事本打不开// 写数据byte b = 100;short s = 200;int i = 300;long l = 400L;float f = 3.0F;double d = 3.14;boolean sex = false;char c = 'a';// 写;把数据以及数据的类型一并写入到文件当中dos.writeByte(b);dos.writeShort(s);dos.writeInt(i);dos.writeLong(l);dos.writeFloat(f);dos.writeDouble(d);dos.writeBoolean(sex);dos.writeChar(c);// 刷新dos.flush();// 关闭最外层dos.close();}}
推荐阅读
- Java|Java:2022年招聘Java开发人员指南
- Java|HR傲慢对待求职者,还“诅咒”对方找不到工作,大学生也太难了
- 在Java 8及更高版本中使用Java流
- Java实现第三方短信接口发送短信验证码
- 如何帮助孩子理解乘法分配律 乘法分配律说课稿
- 算法|清华博士只值50块时薪?差点凑不齐学费,网友表示不能理解
- Java|“年薪20万”VS“银行柜员”该怎么选?内部员工:无条件选后者
- 从广义科学角度理解中医
- 关于正确理解阴阳的几个问题
- 碧玉妆成一树高”中的“碧玉”是这样理解的 碧玉妆成一树高的意思