您的位置:首页 > 编程语言 > Java开发

JavaSE——IO流之字节流

2020-01-14 14:31 134 查看

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)
创建一个新的缓冲输出流,以将数据写入指定的底层输出流

  • 案例代码

  • 运行结果

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Easonlistener 发布了27 篇原创文章 · 获赞 1 · 访问量 625 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: