[五] JavaIO之InputStream OutputStream简介 方法列表说明详解编程语言
2023-06-13 09:20:45 时间
read() 从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值
如果因为已经到达流末尾而没有可用的字节,则返回值 -1
无参数的read()返回的数据为读取到的字节值
而有参数的则是读取到字节数组中,所以返回值为读取到的个数
read方法关键点
要么就是直接返回读取的字节
要么就是将读取到的字节放入字节数组中,字节数组是你传递进去的
类似read的调用形式
直接写入指定字节的write(int b) 方法是根本
其他的是拓展功能
read() 与write(int b) 是根本的读取一个字节或者写入一个字节的方法
其余形式是针对传入字节数组作为参数,以及指定字节数组的偏移量时的一些拓展功能
一旦传递了字节数组作为参数
read将会读取数据到字节数组
write将会将字节数组的数据写入
都需要关闭流,所以都有close方法
都是关闭流并释放与此流有关的系统资源
都可能抛出IOException
返回的是实际跳过的字节数
在内部创建一个 byte 数组,然后重复将字节读入其中,直到读够 n 个字节或已到达流末尾为止
mark(int)用来在此输入流中做标记,标记当前位置 打一个书签
markSupported() 测试此输入流是否支持 mark 和 reset 方法
reset() 将此流重新定位到最后一次对此输入流调用 mark 方法时的位置 回到书签
说起来很迷惑,用起来却很简单
比如
xxxStream.mark(50);//表明系统至少应该缓冲50以上个数据,以保证可以回来重新读取
xxxStream.read();
..
xxxStream.read();
如果方法 markSupported 返回 true,那么输入流总是在调用 mark 之后记录所有读取的字节
并时刻准备在调用方法 reset 时(无论何时),再次提供这些相同的字节
但是,如果在调用 reset 之前可以从流中读取多于 readlimit 的字节,则不需要该流记录任何数据
如果因为已经到达流末尾而没有可用的字节,则返回值 -1
无参数的read()返回的数据为读取到的字节值
而有参数的则是读取到字节数组中,所以返回值为读取到的个数
read方法关键点
要么就是直接返回读取的字节
要么就是将读取到的字节放入字节数组中,字节数组是你传递进去的
将指定的字节写入此输出流
write 的常规协定是:向输出流写入一个字节, 要写入的字节是参数 b 的八个低位 b 的 24 个高位将被忽略
说白了就是写入的是byte虽然参数是int write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流 write(b) 的常规协定是:应该与调用 write(b, 0, b.length) 的效果完全相同 write(byte[] b,int off,int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流 write(b, off, len) 的常规协定是:将数组 b 中的某些字节按顺序写入输出流; 元素 b[off] 是此操作写入的第一个字节,b[off+len-1] 是此操作写入的最后一个字节
类似read的调用形式
直接写入指定字节的write(int b) 方法是根本
其他的是拓展功能
read() 与write(int b) 是根本的读取一个字节或者写入一个字节的方法
其余形式是针对传入字节数组作为参数,以及指定字节数组的偏移量时的一些拓展功能
一旦传递了字节数组作为参数
read将会读取数据到字节数组
write将会将字节数组的数据写入
都需要关闭流,所以都有close方法
都是关闭流并释放与此流有关的系统资源
都可能抛出IOException
flushflush的含义为刷新,在写入数据时使用
所以,只有输出流拥有flush方法 之所以需要刷新,是因为有的输出流的写方法实现,可能已经缓冲了以前写入的任何字节
那么,这个方法用于提供能够立即将数据写入到磁盘的功能
不过,只是立即请求操作系统进行处理,而不保证这些字节实际已经写入到物理设备,比如磁盘 下面几个为InputStream独有 public int available() throws IOException
返回的是实际跳过的字节数
在内部创建一个 byte 数组,然后重复将字节读入其中,直到读够 n 个字节或已到达流末尾为止
mark(int)用来在此输入流中做标记,标记当前位置 打一个书签
markSupported() 测试此输入流是否支持 mark 和 reset 方法
reset() 将此流重新定位到最后一次对此输入流调用 mark 方法时的位置 回到书签
说起来很迷惑,用起来却很简单
比如
xxxStream.mark(50);//表明系统至少应该缓冲50以上个数据,以保证可以回来重新读取
xxxStream.read();
..
xxxStream.read();
xxxStream.reset();//reset之后,读取到的数据将会和刚才调用mark 方法后read的数据是相同的
如果方法 markSupported 返回 true,那么输入流总是在调用 mark 之后记录所有读取的字节
并时刻准备在调用方法 reset 时(无论何时),再次提供这些相同的字节
但是,如果在调用 reset 之前可以从流中读取多于 readlimit 的字节,则不需要该流记录任何数据
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/15614.html
c相关文章
- 关于navicat premium数据库激活一直不成功的解决方法(亲测有效)
- 【说站】python列表添加和删除的方法
- 【说站】python列表删除项目的方法
- 2022-11-13:以下go语言代码中,如何获取结构体列表以及结构体内的指针方法列表?以下代码应该返回{“S1“:[“M1“,“M2“],“S2“:[],“S
- 今天就和朋友们分享下,wordpress网站后台最近打开速度很慢的原因及解决方法。推荐第三种方法
- 【Android Gradle 插件】LintOptions 配置 ③ ( LintOptions#error 方法配置 | Lint 问题 ID | 查询 Lint 问题 ID 列表 )
- Python基础语法-基本数据类型-列表的方法
- Java List.addAll()方法:添加所有元素到列表中
- Java List.remove()方法:移出列表中的指定元素
- Linux下查看用户列表的方法(linux列出用户)
- Linux中快速获取进程列表的方法(linux获取进程列表)
- MySQL字符串转列表: 简单灵活方法(mysql字符串转列)
- Redis 轻松存储列表数据:使用 Redis 保存 List 的方法(redis保存list)
- 的处理处理Linux参数列表过长的有效方法(linux参数列表过长)
- Linux 系统换装固态硬盘:快速提升性能的正确方法(linux装固态硬盘)
- 25字中文文章标题:Linux服务器工具盘点:您需要知道的访问方法(访问linux服务器工具)
- 从Redis中获取列表数据一种快速有效的方法(获取redis列表数据)
- Mysql中强大的AND运算符的使用方法探究(mysql中and的使用)
- Oracle中操作MDB文件的方法(mdb文件在oracle)
- 使用MySQL高效下载海量电视剧资源的方法(MYSQL下载电视剧资源)
- 查看Oracle PSU更新列表的新方法(oracle psu列表)
- python解决字典中的值是列表问题的方法
- PHP自定义大小验证码的方法详解
- Android通过LIstView显示文件列表的两种方法介绍
- Python中字典(dict)和列表(list)的排序方法实例
- ThinkPHP中使用ajax接收json数据的方法