java - io流 字节流

本文深入讲解Java IO流的概念,包括字节流与字符流的区别,常用父类如InputStream、OutputStream、Reader、Writer的作用,以及如何使用FileInputStream进行字节读取。探讨了read()方法返回int类型的原因,避免读取过程中的数据误判。同时介绍了write()方法,字节数组拷贝的核心操作,以及available()方法获取文件字节总数的用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概念:

  IO流用来处理设备之间的数据传输

  java对数据的操作是通过流的方式

  java用于操作流的类都在IO包中

  流按流向分为两种:输入流,输出流

  流按操作类分为两种:

    字节流:字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的

    字符流:字符流只能操作纯字符数据,比较方便

2.IO流常用父类

  字节流的抽象父类:

    InputStream

    OutputStream

  字符流的抽象父类

    Reader

    Writer

3.IO程序书写

  使用前,导入IO包的类

  使用时,进行IO异常处理

  使用后,释放资源

 

FileInputStream:

  read() 一次读取一个字节

 

  read()方法读取的是一个字节,为什么返回是int,而不是byte

  因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时间遇到11111111,它是byte类型的-1,我们程序读到-1就会停止。所以在读取的时候用int类型接收,如果1111111会在其前面补上24个0,那么byte类型的-1就变成int类型的255了,这样可以保证整个数据读完,而结束标记的-1就是int类型

 

  write() 一次写出一个字节

 

io流核心:

字节数组拷贝available()方法

  int read(byte【】 b) 一次读一个字节数组

  write (byte【】 b) 一次写出一个字节数组

  available() 获取读的文件所有的字节个数

  有可能会内存溢出

定义小数组:

  write(byte【】 b)

  write(byte【】 b,int off, int len)写出有效的字节个数。 off 索引, len要写的个数

推荐:

 

 

close():

  具备刷新的功能,在关闭流之前,就会先刷新一次缓冲区,将缓冲区的字节全部刷新到文件上,再关闭,close方法刷完之后就不能写了

flush():

  具备刷新的功能,刷完之后还可以继续写

 

 

 

 

 

 流标准处理异常:

 

转载于:https://www.cnblogs.com/pengranxindong/p/10008013.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值