java学习笔记(31)IO字节流

31、IO字节流


1、概述

硬盘的输入输出流

顶层四个父类

输入流输出流
字节流字节输入流InputStream字节输出流OuterStream
字符流字符输入流Reader字符输出流Writer

在电脑中,所有数据都是以字节的形式存储的

2、输出流OutputStream

输出流中定义了一些子类共性的成员方法

 void close()
 关闭此输出流并释放与此流有关的所有系统资源。
void flush()
刷新此输出流并强制写出所有缓冲的输出字节。
void write(byte[] b)
将 b.length 个字节从指定的 byte 数组写入此输出流。
void write(byte[] b, int off, int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
 abstract  void write(int b)
 将指定的字节写入此输出流。

输出流不能直接创建对象,要使用其子类FileoutStream(文件字节输出流)

2.1、FileOutStream

作用

把内存中的数据写入硬盘

构造

FileoutStream(String name)
//创建一个向具有指定名称的文件中写入数据的输出文件流
FileoutStream(File file)
//作用相同

两个构造的参数都是一个文件

构造的作用

  1. 创建一个FileoutStream对象
  2. 会根据构造中传递的文件/路径创建一个空文件
  3. 会把FileOutStream对象指向创建好的空文件

使用步骤

  1. 创建一个FileOutStream对象,构造方法中传递写入数据的目的地
  2. 调用write方法,把数据写入
  3. 释放资源

2.2、write方法

void write(byte[] b)
将b.length个字节从指定的byte数组写入此输出流

一次写入多个字节时:

  1. 如果第一个字节时正数,那么显示的结果hi按ASC码表显示
  2. 如果第一个是负数,那么第一个字节和第二个字节会组成一个中文(GBK)
void write(byte[] b,int off,int len)

把字节数组的一部分写入,第二个参数是开始索引,第三个是写入的长度

2.3、追加和续写

使用两个参数的构造即可

FileOutputStream(String name, boolean append)
            创建一个向具有指定 name 的文件中写入数据的输出文件流
  FileOutputStream(File file, boolean append)
           创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
参数:第一个是路径,第二个是追加/续写的开关,为true就不会覆盖
    
换行符:\r\n

3、输入流InPutStream

java.io.InputStream字节输入流是一个抽象类

此抽象类是所有字节输入流的父类

共有方法

int read()从输入流中读取数据的下一个字节
 int read(byte[] b, int off, int len)从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
 void close()关闭此文件输入流并释放与此流有关的所有系统资源。

3.1、FileInputStream类

FileInputStream类是输入流的常用类

构造

FileInputStream(String name)//通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定
FileInputStream(File file)//通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。

使用步骤

  1. 创建FileInputStream对象
  2. 使用对象的read方法
  3. 释放资源

3.2、一次读取多个字节

int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中

注意

  1. 方法的参数byte[] b的作用是起缓冲作用,存储每次读取的多个字节
  2. 方法的返回值是每次读取的有效字节个数

解释

  1. 每次读取的字节数量取决于byte[] b的长度
  2. 下一次读取会覆盖前一次读取存在数组中的字节
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值