JAVA学习笔记——IO流

概念

流是一个抽象概念,是对输入和输出设备的 抽象,在Java程序中,对于数据的输入/输出操 作都是
以“流”的方式进行,设备可以是内存,文件,网络等等。

打个比方,我们可以把流想象成一根管道,数据想象成水流,水流经过自然就形成了方向 的概念。在Java中一般以程序作为参考对象, 如果数据是从程序流向设备,那我们称之为输 出流,反之我们 称为输入流。当程序需要从某个数据源头读入数据时,就会开启一个输入流,从而读入数据,数据源头可以为文件,内存或者网络。相反,需要写出数据到某个数据源时,也会开启一个输出流这个数据源头同样以是文件, 内存或者网络等等。

流的分类

1.从需要处理的数据单位不同,可以分为两种
字符流
字节流
2.从数据流方向不同,同样可分为两种
输入流
输出流
3.功能不同,也能分为两种
节点流
处理流

节点流

节点流可以从一个特定的数据源读写数据,即节点流是直接操作文件,网络的流,
比如
FileInputStream和FileOutputStream
他们直接从文件中读取或往文件中写入字节流。

处理流

处理流可以为节点流提扩展更多更强大的功能,可以理解为是对节点流的包装。

BufferedInputStream
BufferedOutputStream
他们使用已经存在的节点流来构造,提供带缓
冲的读写提高了读写的效率。

流的结构

Java所有的流类位于java.io包中,都分别继承字以下四种抽象流类型。

字节流字符流
输入流InputStreamReader
输出流OutputStreamOutputStream

字节流

继承自InputStream/OutputStream的流都是用于向程序中输入/输出数据,且数据的单位都是字节(1byte=8bit)
InputStream抽象了应用程序读取数据的方式
OutputStream抽象了应用程序写出数据的方式
EOF = End 读到-1就读到结尾
输入流基本方法

//读取一个字节无符号填充到int低八位,-1是EOF
int a = in.read();
//读取数据填充到字节数组b
in.read(byte[] b);
//读取数据到字节数组buf,从buf的start位置开始,存放size长度的数据
in.read(byte[] b, int start, int size);

输出流基本方法

//写出一个byte到流,b的低8位
out.write(int b)
//将b字节数组写入到流
out.write(byte[] b)
//字节数组b从start位置开始写size长度的字节到流
out.write(byte[] b, int start, int size)

FileInputStream 具体实现了在文件上读取数据
FileOutputStream 实现了想文件中写出byte数据的方法
DataOutputStream/DataInputStream

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值