I/O流,字节流,字符流,数据流,缓存流,转换流,对象流,随机访问流

根据流的方向性,可以分为输入流和输出流。
以java为例,则输入流是由文件“流向”程序,输出流是程序“流向”文件。
在这里插入图片描述

这里是以文件为例,java程序还可以讲数据写入到网络、内存等中。

流的分类

java中的IO流可以根据很多不同的角度进行划分,最常见的是以数据的流向和数据的类型来划分

根据数据的流向分为:输入流和输出流

  • 输入流 :把数据从其他设备上读取到程序中的流

  • 输出流 :把数据从程序中写出到其他设备上的流

根据数据的类型分为:字节流和字符流

  • 字节流 :以字节为单位(byte),读写数据的流
  • 字符流 :以字符为单位(char),读写数据的流

输入流 输出流
字节流 字节输入流 字节输出流
字符流 字符输入流 字符输出流

注意,字节指的是byte,字符指的的是char

一个流具备最起码的三个特点

  • 是输入还是输出
  • 是字节还是字符
  • 流的目的地

字节流

即以字节传输的流。(字节:计算机最基本的二进制存储单位)

java.io.InputStream是所有字节输入流的父抽象类

InputStream中最核心的三个read方法:(其中.skip()方法可以让我们先跳过指定的字节数,再去读取)

//每次读取一个字节,返回值是本次读取的字节值
public abstract int read() throws IOException;
//每次读取多个字节,并存放到指定数组中,返回值是本次一共读取了多少个字节(字节数)
public int read(byte b[]) throws IOException {
   
    return read(b, 0, b.length);
}
/*读取同传数组参数方法,区别在于,可以指定从数组的第几个位置开始存放,len为最多存放多少个字节
(即调用这个方法的时候,一次只读从len个字节。比如数组长度有900,len为300,每次只从其他设备中读取300字节。)*/
public int read(byte b[], int off, int len) throws IOException
{
   	if (b == null) {
   
        throw new NullPointerException();
    } else if (off < 0 || len < 0 || len > b.length - off) {
   
        throw new IndexOutOfBoundsException();
    } else if (len == 0) {
   
        return 0;
    }

    int c = read();
    if (c == -1) {
   
        return -1;
    }
    b[off] = (byte)c;

    int i = 1;
    try {
   
        for (; i < len ; i++) {
   
            c = read();
            if (c == -1) {
   
                break;
            }
            b[off + i] = (byte)c
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值