字节流以字节为传输单位,用来读写8位的数据,除了能够处理纯文本文件之外,还能用来处理二进制文件的数据。InputStream类和OutputStream类是所有字节流的父类。

InputStream类

面向字节的输入流都是InputStream类的子类,其类层次结构如图10-6所示。


图10-6 InputStream的类层次结构图

表 10-5 列出了 InputStream 的主要子类及说明。

表 10-5 InputStream 的主要子类
类名 功能描述
FileInputStream 从文件中读取的输入流
PipedInputStream 输入管道
FilterInputStream 过滤输入流
ByteArrayInputStream 从字节数组读取的输入流
SequenceInputStream 两个或多个输入流的联合输入流,按顺序读取
ObjectInputStream 对象的输入流
LineNumberInputStream 为文本文件输入流附加行号
DataInputStream 包含读取 Java 标准数据类型方法的输入流
BufferedInputStream 缓冲输入流
PushbackInputStream 返回一个字节并把此字节放回输入流

InputStream 流类中包含一套所有输入都需要的方法,可以完成最基本的从输入流读入数据的功能。表 10-6 列出了其中常用的方法及说明。

表 10-6 InputStream 的常用方法
方法 功能描述
void close() 关闭输入流
void mark() 标记输入流的当前位置
void reset() 将读取位置返回到标记处
int read() 从输入流中当前位置读入一个字节的二进制数据,以此数据为低位字节,补足16位的整型量(0~255)后返回,若输入流中当前位置没有数据,则返回-1
int read(byte b[]) 从输入流中的当前位置连续读入多个字节保存在数组中,并返回所读取的字节数
int read(byte b[], int off, int len) 从输入流中当前位置连续读len长的字节,从数组第off+1个元素位置处开始存放,并返回所读取的字节数
int available() 返回输入流中可以读取的字节数
long skip(long n) 略过n个字节
long skip(long n) 跳过流内的n个字符
boolean markSupported() 测试输入数据流是否支持标记

OutputStream类

面向字节的输出流都是OutputStream类的子类,其类层次结构如图10-7所示。


图10-7 OutputStream的类层次结构图

10-7列出了OutputStream的主要子类及说明。

表10-7 OutputStream的主要子类
类名 功能描述
FileOutputStream 写入文件的输出流
PipedOutputStream 输出管道
FilterOutputStream 过滤输出流
ByteArrayOutputStream 写入字节数组的输出流
ObjectOutputStream 对象的输出流
DataOutputStream 包含写Java标准数据类型方法的输出流
BufferedOutputStream 缓冲输出流
PrintStream 包含print()和println()的输出流

OutputStream流类中包含一套所有输出都需要的方法,可以完成最基本的向输出流写入数据的功能。表10-8列出了其中常用的方法及说明。

表10-8 OutputStream的常用方法
方法 功能描述
void close() 关闭输出流
void flush() 强制清空缓冲区并执行向外设输出数据
void write(int b) 将参数b的低位字节写入到输出流
void write(byte b[]) 按顺序将数组b[]中的全部字节写入到输出流
void write(byte b[], int off, int len) 按顺序将数组b[]中第off+1个元素开始的len个数据写入到输出流

由于InputStream和OutputStream都是抽象类,所以在程序中创建的输入流对象一般是它们某个子类的对象,通过调用对象继承的read()和write()方法就可实现对相应外设的输入输出操作。

Java知多少(69)面向字节的输入输出流的更多相关文章

  1. 八. 输入输出(IO)操作4.面向字节的输入输出流

    字节流以字节为传输单位,用来读写8位的数据,除了能够处理纯文本文件之外,还能用来处理二进制文件的数据.InputStream类和OutputStream类是所有字节流的父类. InputStream类 ...

  2. Java IO流学习总结一:输入输出流

    Java IO流学习总结一:输入输出流 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54292148 本文出自[赵彦军的博客] J ...

  3. Java I/O(二)其他常用的输入输出流PrintStream等、标准流重定向

    四.FilterOutputStream.PrintStream PrintStream是继承自FilterStream类的,例如标准输出流System.out就是著名的PrintStream类对象. ...

  4. Java基础知识笔记第十章:输入输出流

    File类 文件的属性 目录 文件的创建与删除 运行可执行文件 文件字节输入流 文件字节输出流 文件字符输入输出流 缓冲流 随机流 数组流 数据流 对象流 序列化与对象克隆 使用Scanner解析文件 ...

  5. Java知多少(完结篇)

    Java知多少(1)语言概述 Java知多少(2)虚拟机(JVM)以及跨平台原理 Java知多少(3) 就业方向 Java知多少(4)J2SE.J2EE.J2ME的区别 Java知多少(5) Java ...

  6. Java知多少(中)

    Java知多少(上) )interface接口 )接口和抽象类的区别 )泛型详解 )泛型通配符和类型参数的范围 )异常处理基础 )异常类型 )未被捕获的异常 )try和catch的使用 )多重catc ...

  7. Java知多少(66)输入输出(IO)和流的概述

    输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作.几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等.通过输入和输出操作可以从外界接收信息, ...

  8. Java 输入输出流 转载

    转载自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所 ...

  9. java输入输出流总结 转载

    一.基本概念 1.1 什么是IO?     IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作.     Java所有的I/O机制都是 ...

随机推荐

  1. SQLite中SELECT基本形式

    SQLite中SELECT基本形式 每个数据库通常都包含多个表,而每个表又包含多条数据.要获取数据库中的数据,就需要SQL语言提供的查询语句SELECT.本章将讲解和SELECT语句相关的内容,其中包 ...

  2. python魔法方法-比较相关

    在python2.x的版本中,支持不同类型的比较,其比较原则如下: 内置类型: 1.同一类型:   1.1)数字类型:包含int.float.long.complex.bool(bool类型是int的 ...

  3. Codeforces.1045A.Last chance(最大流ISAP 线段树优化建图)

    题目链接 \(Description\) 你需要用给定的\(n\)个武器摧毁\(m\)架飞船中的某一些.每架飞船需要被摧毁恰好一次. 武器共三种:1.可以在给定的集合中摧毁一架飞船:2.可以摧毁区间\ ...

  4. node+koa2 postman 测试post请求

    注意:一定要写成  “” ,否则后台一直接收不到 router.post('/form',async(ctx,next)=>{ const form1 = ctx.request.body; c ...

  5. git 修改文件内容

    在安装Git和创建版本库的时候,我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容  [root@node1 gi ...

  6. cocosCreator 新版本的动作函数API的应用

    利用触摸位置判断,点击的是屏幕的左侧还是右侧,控制主角左右移动: 见代码: InputControl:function () { var self=this; //cc.systemEvent sel ...

  7. Ansible修改自定义端口和登录用户

    如下所示: [servers] host1 ansible_ssh_host=192.0.2.1 ansible_ssh_port=5555 ansible_ssh_user="user&q ...

  8. anaconda3/lib/libcrypto.so.1.0.0: no version information available (required by wget)

    Solution: sudo ldconfig /lib/x86_64-linux-gnu/ #you need to use the libcrypto.so from /lib/x86_64-li ...

  9. Go语言之高级篇beego框架之请求数据处理

    1.Controller中数据参数处理 获取参数:我们经常需要获取用户传递的数据,包括 Get.POST 等方式的请求,beego 里面会自动解析这些数据,你可以通过如下方式获取数据: GetStri ...

  10. 【GPU编解码】GPU硬编码 (转)

    一.OpenCV中的硬编码 OpenCV2.4.6中,已实现利用GPU进行写视频,编码过程由cv::gpu::VideoWriter_GPU完成,其示例程序如下. 1 int main(int arg ...