网站首页 > java教程 正文
字节流
- 字节流是指流的内容是字节,字节流也称为二进制流。
- 所有的字节输入流都继承了InputStream抽象类;
- 所有的字节输出流都继承了OutputStream抽象类。
- InputStream和OutputStream抽象类定义了最基本的输入和输出方法。
InputStream的read() 方法
InputStream类提供了以下用于读取字节流的方法:
- public abstract int read() throws IOException
该方法的作用是从来源输入流中读取数据的下一个字节到Java程序中
该方法的返回值是从0到255的int类型的值
如果没有可用的字节,因为已经达到输入流的末尾,则返回‐1
该方法调用的时候只读取一个字节,因此往往放在while之后的条件判断中,例如:
while ( (len = inputstream.read()) != ‐1)
InputStream还提供了用于批量读取字节的read方法,包括:
public int read(byte[] b) throws IOException
public int read(byte[] b, int off, int len) throws IOException
第一个方法从来源输入流中读取一定数量的字节数,并存储到缓冲区数组b中,返回值为实际读取的字节数。
- 该方法运行时读取一定数量的字节数,Java会尽可能读取的字节数是数组b的长度,但也有可能读取少于b长度的字节数。
- 如果没有可用的字节,因为已经达到输入流的末尾,则返回‐1
第二个方法多了两个参数,off 和 len。
- off 是存储到数组b中时元素下标的偏移量,而len则是要读取的字节数。
OutputStream的write方法
OutputStream类则提供了write方法用于将指定的数据写入到输出流中
最简单的write方法如下:
- public void write(int b);
该方法的作用是往输出流中写入一个字节b
OutputStream类还包括以下2个方法:
- void write( byte b[ ] );
该方法的作用是往输出流中写一个字节数组b
- void write( byte b[ ], int off, int len );
该方法的作用是把字节数组b中从下标off开始,长度为len的字节写入到输出流中
OutputStream中还包括了flush方法:
- public void flush()
该方法是刷空输出流,并输出所有被缓存的字节。
由于某些流支持缓存功能,flush法将把缓存中所有内容强制输出到流中。
OutputStream还提供了关闭输出流的方法:
- public void close();
该方法在输出流操作完毕后必须关闭,否则可能会产生异常。
实际上,InputStream类也提供了close方法。
考虑到IO处理时可能会产生异常,一般在编程时,把close方法的调用放
在finally语句块中,保证close方法确定会被调用执行。
猜你喜欢
- 2024-10-31 阿里经典面试-java三线程轮流打印A、B、C的ReentrantLock实现
- 2024-10-31 学习廖雪峰的JAVA教程---反射(名叫Class的类、动态加载)
- 2024-10-31 Java案例-求和与打印九九乘法表(用java打印九九乘法口诀)
- 2024-10-31 Java面试题:怎么让两个线程交替打印1和2(生产者消费者问题)
- 2024-10-31 第九章:Java输入输出流和文件操作
- 2024-10-31 Java 自定义注解+AOP 实现日志打印
- 2024-10-31 Java基础学习:java输出整数类型(java分别输出整数和小数)
- 2024-10-31 不懂这些,你敢说自己知道Java标准输入输出流?
- 2024-10-31 Java高阶面试:如何实现三个线程交替循环打印
- 2024-10-31 IntelliJ IDEA 如何针对Java 代码快速打印 println
你 发表评论:
欢迎- 07-15采用Oracle OSB总线进行服务注册和接入
- 07-15javaEE 新闻管理系统 oracle11+tomcat6
- 07-15从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 07-15如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 07-15【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 07-15【mykit-data】 数据库同步工具(数据库表同步工具)
- 07-15[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- 07-15Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- 最近发表
-
- 采用Oracle OSB总线进行服务注册和接入
- javaEE 新闻管理系统 oracle11+tomcat6
- 从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 【mykit-data】 数据库同步工具(数据库表同步工具)
- [Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- Oracle数据库云服务系列新增前所未有的企业级功能
- 直播预告丨如何实现Oracle存储过程到java的一键转化
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)