流是一组有序的数据序列,根据操作类型,可以分为输入流和输出流两种,Java语言中定义的负责各种输入输出的类都被放在java.io包中。其中所有的输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有的输出流都是抽象类OutStream(字节输出流)或抽象类Writer(字符输出流)的子类。

一. 输入流

1. InputStream类是字节输入流的抽象类,是所有字节输入流的父类,其层次结构为:

图1 InputStream类的层次结构

该类中所有方法遇到错误都会引发IOException异常,简要说明部分方法:

  • read()方法:从输入流中读取数据的下一个字节。返回0~255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回-1.
  • read(byte[] b):从输入流中读入一定长度的字节,并以整数的形式返回字节数。
  • mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。
  • reset()方法:将输入指针返回到当前所做的标记处。
  • skip(long n)方法:跳过输入流上的n个字节并返回实际跳过的字节数。
  • markSupported()方法:如果当前流支持mark()/reset()操作就返回True。
  • close()方法:关闭此输入流并释放与该流关联的所有系统资源。

2. Reader类是字符输入流的抽象类,所有的字符输入流都是它的子类,其层次结构为:

图2 Reader类的层次结构

Reader类中方法与InputStream类中的方法类似。

二. 输出流

1. OutputStream类是字节输出流的抽象类,此抽象类是表示输出字节流的所有类的超类,其层次结构为:

图3 OutputStream类的层次结构

OutputStream类中的所有方法均返回void,在遇到错误时引发IOException异常,简单说明部分方法:

  • write(int b)方法:将指定的字节写入此输出流。
  • write(byte[] b)方法:将b个字节从指定的byte数组写入此输出流。
  • write(byte[] b, int off, int len)方法:将指定byte数组中从偏移量off开始的len个字节写入此输出流。
  • flush()方法:彻底完成输出并清空缓存区。
  • close()方法:关闭输出流。

2. Write类是字符输出流的抽象类,所有的字符输出类都是它的子类,其层次结构为:

                                                               

图4 Writer类的层次结构

在学习过程中做做笔记。

Java中的I/O输入输出流概述的更多相关文章

  1. Java中IO流,输入输出流概述与总结

    总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...

  2. Java中的常用的输入输出流

    Java中的输入输出流根据格式又可以分为字节流和字符流:(成对) 字节流:FileInputStream,FileOutputStream   :  BufferedInputStream,Buffe ...

  3. Java中IO对象的输入输出流

    输入流: public void inputDemo () throws IOException { //文件名称 String fileName = "d:\\aaa.txt"; ...

  4. JAVA 中两种判断输入的是否是数字的方法__正则化_

    JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...

  5. java 3 接口与多态&输入输出流

    接口 中的所有方法都是方法 抽象 使用接口实现多继承 类型的装换 数据成员就变成了static 和 final food 和 snow 都是可以吃的 可以同时实现多个接口 接口与接口之间也可以有继承关 ...

  6. (JAVA)从零开始之--对象输入输出流ObjectInputStream、ObjectOutputStream(对象序列化与反序列化)

    对象的输入输出流 : 主要的作用是用于写入对象信息与读取对象信息. 对象信息一旦写到文件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输入流:  Ob ...

  7. Java基础(二十四)Java IO(1)输入/输出流

    在Java API中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称为输出流. 输入流的指向称为源,程序从指向源的输入流中读取数据. 输出流的指向是字节要去的目的地, ...

  8. Java中的IO流之输出流|乐字节

    大家好,乐字节小乐又来了.上一篇给大家带来的是:Java中的IO流之输入流|乐字节,本文将继续讲述IO流之输出流.   一.输出流 1.抽象类:OutputStream 和 Writer Output ...

  9. Java基础之文件的输入输出流操作

    在介绍输入输出流之前,首先需要了解如何创建文件,创建文件夹以及遍历文件夹等各种操作,这里面不在一一介绍,主要介绍的是文件的输入输出流操作. 在起初学习文件操作之前,总是喜欢将输入输出弄混淆,后来通过看 ...

随机推荐

  1. D7下FastMM的使用

    原文出处:http://hi.baidu.com/showwindows/blog/item/5b7ac601c487c605728da573.html FastMM 快速MM:-),在D2006和2 ...

  2. 代理Delegate的小应用(使用setModelData设置下拉日期对话框)

    前言 在平时关于表格一类的的控件使用中,不可避免需要修改每个Item的值,通过在Item中嵌入不同的控件对编辑的内容进行限定,然而在表格的Item中插入的控件始终显示,当表格中item项很多的时候,会 ...

  3. [每天记录一个Bug]Cell中由于block加载网络请求产生的复用

    Bug 出现场景:   cell中使用加载图片的网络请求出现复用,截图如下:         复用原因:   Cell Model中只有一个用户的uid,所有用户相关信息:例如头像\名称\信息等是通过 ...

  4. python常用点小记

    记录一下,经常用到的一些python小工具 1.验证一个字符串是否为url regex = re.compile( r'^(?:http|ftp)s?://' # http:// or https:/ ...

  5. hadoop之文件管理基本操作

    # 格式化hdfs hadoop namenode -format # 查看hadoop下的文件夹 hadoop fs -ls # 创建hdfs文件夹 hadoop fs -mkdir /user/i ...

  6. MySQL 事务嵌套

    MySQL默认自动提交(autocommit=1),如果要开启事务,先关闭自动提交(autocommit=0): InnoDB支持事务,MyISAM不支持: MySQL不支持事务嵌套:已经开启事务后, ...

  7. 【静态NAT】 为什么子网可以ping父网,但是父网ping不通子网?

    为什么子网可以ping父网,但是父网ping不通子网? 这就好比在公网中ping一个192.168.0.x的子网,roter无法找到这个子网的地址,所以会把package丢掉. 如何解决呢,可以在路由 ...

  8. wireshark数据包分析实战 第三、四章

    1,wireshark支持的协议上千种,开源的. 2,wireshark需要winpcap驱动支持.winpcap驱动的作用通过操作系统捕捉原始数据包.应用过滤器.将网卡切换为混杂模式. 3,捕获文件 ...

  9. 02-三种Bean装配机制(三)

    在前两篇中分别介绍了自动化装配机制和通过JavaConfig类进行装配,接下来介绍下通过XML装配bean,其实就目前趋势来看,这种方式用的越来越少(不是我说的,是作者说的,喜欢这种方式的别喷我

  10. CentOS Linux 重启详解

    一.Linux 的五个重启命令 1.shutdown 2.poweroff 3.init 4.reboot 5.halt 二.五个重启命令的具体说明 shutdown reboot 在linux下一些 ...