JavaSE(十七)——IO流之字节流

1. 概述

  • IO流用来处理设备之间的数据传输, Java对数据的操作是通过流的方式。
  • IO流的分类:
    (1): 按照流向进行划分
    输入流
    输出流
    (2): 按照操作的数据类型进行划分
    字节流 :字节输入流 InputStream (读) 字节输出流 OutputStream (写)
    字符流 :字符输入流 Reader(读) 字符输出流 Writer (写)

字节流可以读写任何类型的文件字符流只能读写文本文件
由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。

2. FileOutputStream写出数据

  • 构造方法
    FileOutputStream(File file)
    FileOutputStream(String name)

  • FileOutputStream的三个write()方法
    public void write(int b):一次写入一个字节 超过一个字节 砍掉前面的字节
    public void write(byte[] b):一次写入一个字节数组
    public void write(byte[] b,int off,int len):一次写入一个字节数组的一部分

  • windows下的换行符只用是 \r\n
    Linux \n
    Mac \r

  • FileOutputStream(File file, boolean append)
    创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
    FileOutputStream(String name, boolean append)
    创建一个向具有指定 name 的文件中写入数据的输出文件流。

  • 案例代码
    在这里插入图片描述

  • 运行结果
    在这里插入图片描述

3. FileInputStream读取数据

  • 构造方法
    FileInputStream(File file)
    FileInputStream(String name)
  • FileInputStream的三个read()方法
    public void read(int b):一次读取一个字节,返回的是这个字节数据,如果读取不到,返回 -1,可以拿-1 判断文件是否读取完
    public void read(byte[] b):一次读取一个字节数组
    public void read(byte[] b,int off,int len):一次读取一个字节数组的一部分
  • 案例代码在这里插入图片描述
  • 运行结果在这里插入图片描述

4. 字节流复制文本文件

  • 采用文件输入输入流进行文件的复制,一次读一个字节写一个字节来复制一个文本文件。
  • 步骤分析:
    (1)创建字节输入流对象和字节输出流对象
    (2)频繁的读写操作
    (3)释放资源
  • 案例代码在这里插入图片描述
  • 运行结果
    在这里插入图片描述

5. 字节流复制MP3

  • 一次读写一个字节来复制音乐

  • 案例代码
    在这里插入图片描述

  • 运行结果
    在这里插入图片描述

  • 一次读写一个字节数组来复制音乐

  • 案例代码在这里插入图片描述

  • 运行结果
    在这里插入图片描述
    可以看出明显比一次读取一个字节来复制快得多

6. 高效的字节输入输出流

- BufferedInputStream(InputStream in)
创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
BufferedInputStream(InputStream in, int size)
创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
- BufferedOutputStream(OutputStream out)
创建一个新的缓冲输出流,以将数据写入指定的底层输出流

  • 案例代码在这里插入图片描述

  • 运行结果
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值