java 写入byte数组_Java 进阶:Java File & IO—2

本文详细介绍了Java的IO流,包括转换流如OutputStreamWriter和InputStreamReader用于字符与字节之间的转换,字节缓冲流如BufferedOutputStream和BufferedInputStream提升读写效率,字符缓冲流如BufferedReader和BufferedWriter,以及序列化流与反序列化流。此外,还讲解了打印流和标准输入、输出流的使用,以及IO流在文件复制和异常处理中的应用。
摘要由CSDN通过智能技术生成

目录

一、转换流
二、字节缓冲流
三、字符缓冲流
四、序列化流与反序列化流
五、打印流
六、标准输入、输出流
七、IO流总结

一、转换流

1. OutputStreamWriter 类

(1) 概述

  • java.io.OutputStreamWriter继承 Writer类;就是一个字符输出流,写文本文件;
  • 是字符通向字节的桥梁,将 字符流 转成 字节流
  • write():字符,字符数组,字符串

(2) 构造方法

  • OutputStreamWriter(OuputStream out):接收所有的字节输出流

字节输出流目前只有: FileOutputStream

  • OutputStreamWriter(OutputStream out, String charsetName)

String charsetName:传递 编码表名字:GBK、UTF-8

public class OutputStreamWriterDemo {    public static void main(String[] args) throws IOException {        writeUTF();    }   //转换流对象OutputStreamWriter写文本,采用UTF-8编码表写入    public static void writeUTF()throws IOException{        //创建字节输出流,绑定文件        FileOutputStream fos = new FileOutputStream("c:utf.txt");        //创建转换流对象,构造方法保证字节输出流,并指定编码表是UTF-8        OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8"); //GBK可以不写        osw.write("你好");        osw.close(); //使用close()连刷新带关闭    }}123456789101112131415

2. InputStreamReader 类

(1) 概述

  • java.io.InputStreamReader继承 Reader;是 字符输入流,读取文本文件
  • 字节流向字符的桥梁,将 字节流 转为 字符流
  • 读取的方法:read() 读取1个字符,读取字符数组

(2) 构造方法

  • InputStreamReader(InputStream in):接收所有的 字节输入流

可以传递的字节输入流: FileInputStream

  • InputStreamReader(InputStream in,String charsetName): 传递编码表的名字
public class InputStreamReaderDemo {    public static void main(String[] args) throws IOException {        readUTF();    }    //转换流,InputSteamReader读取文本,采用UTF-8编码表,读取文件utf    public static void readUTF()throws IOException{        //创建字节输入流,传递文本文件        FileInputStream fis = new FileInputStream("c:utf.txt");        //创建转换流对象,构造方法中,包装字节输入流,同时写编码表名        InputStreamReader isr = new InputStreamReader(fis,"UTF-8");        char[] ch = new char[1024];        int len = isr.read(ch);        System.out.println(new String(ch,0,len));        isr.close();    }}1234567891011121314151617

###3. 转换流子类父类的区别

  • 继承关系OutputStreamWriter 的子类: FileWriterInputStreamReader 的子类:FileReader
  • 区别
  • OutputStreamWriterInputStreamReader 是字符和字节的桥梁:也可以称之为字符转换流。字符转换流原理:字节流 + 编码表
  • FileWriterFileReader:作为子类,仅作为操作字符文件的便捷类存在。当操作的字符文件,使用的是默认编码表时可以不用父类,而直接用子类就完成操作了,简化了代码。
  • 以下三句话功能相同

InputStreamReader isr = new InputStreamReader(new FileInputStream(“a.txt”));//默认字符集。
InputStreamReader isr = new InputStreamReader(new FileInputStream(“a.txt”),“GBK”);//指定GBK字符集。
FileReader fr = new FileReader(“a.txt”);

注意:一旦要指定其他编码时,绝对不能用子类,必须使用字符转换流。什么时候用子类呢?
条件:1、操作的是文件。2、使用默认编码。

二、字节缓冲流

1. 概述

  • 可提高IO流的读写速度
  • 分为字节缓冲流与字符缓冲流
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值