java io体系介绍
2014-07-24 17:20
507 查看
前言
本文对java的io体系进行介绍。1 总概
IO,Input/Output,输入和输出。java的io处理分为两类,一类为字节流,一类为字符流。字节流处理的顶层接口为InputStream和OutputStream,字符流处理的顶层接口为Writer和Reader。
2 InputStream
本节对InputStream及其体系进行介绍。InputStream体系关系如下图所示。
2.1 InputStream
输入流的父类,提供read方法从stream中读取字节,有三种类型的read方法。read(),读取输入流的下一个字节,返回值为0到255,如果没有,则会返回-1。该方法一直block直到有数据可读。
read(byte b[]),从输入流中读取一定数量的字节,字节存储在一个字节数组中。该方法一直block直到有数据可读。
read(byte b[], int off, int len),从输入流中读取len长度的字节,字节存储到一个字节数组中,off为读取的第一个字节在字节数组中的位置。该方法一直block直到有数据可读。
2.2 ByteArrayInputStream
ByteArrayInputStream,内部包含一个buffer,buffer中存储字节,buffer由数组实现。其read方法是同步的,内部有一个pos,代表着下一个要读的字节在buffer中的位置。2.3 FileInputStream
FileInputStream,用于从File中读取字节,constructor可以是一个File对象,也可以是一个String,String表示的是File所在的路径。2.4 PipedInputStream
PipedInputStream,管道输入流。一个管道输入流应该连接到管道输出流,然后管道输入流可以读取到写入到管道输出流中的数据。通常,一个线程可以从管道输入流中读取数据,而这些数据由其他对应的线程向管道输出流中写入。当连接到管道的线程不再alive时,管道将broken。2.5 ObjectInputStream
ObjectInputStream,可以反序列化序列化到ObjectOutputStream中的obejct或者其他类型数据,提供readObejct方法,返回值为Obejct。public static Object toObject(byte[] bytes) { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = null; try { ois = new ObjectInputStream(bais); Object object = ois.readObject(); return object; } catch(IOException ex) { throw new RuntimeException(ex.getMessage(), ex); } catch(ClassNotFoundException ex) { throw new RuntimeException(ex.getMessage(), ex); } finally { try { ois.close(); } catch (Exception e) {} } }
2.6 FilterInputStream
FilterInputStream,包含一些其他的输入流,其一些子类提供输入流处理的其他功能。其子类有BufferedInputStream,DataInputStream,PushbackInputStream,LineNumberInputStream。BufferedInputStream,缓冲输入支持和支持mark、reset操作,缓冲通过内部的一个byte数组实现。
DataInputStream,支持应用程序从输入流中读取java的内部类型,例如int,char等。
PushbackInputStream,拥有一个Pushback缓冲区,可以将字节推回而重新读取。
LineNumberInputStream,已经Deprecated了。
2.7 其他
StringBufferInputStream,已经Deprecated。SequenceInputStream,可以按顺序读取多个流。
3 OutputStream
OutputStream,输出流,提供write方法写入字节到流中。本节对OutputStream及其体系进行介绍。OutputStream相关类如下图所示。
4 Writer
5 Reader
相关文章推荐
- Java IO详细介绍
- JAVA基础IO介绍
- JavaIO 1—File类的介绍
- JAVA IO包的常用类简单介绍
- JavaIO 4—Write和Reader类的简单介绍
- JSON-RPC-Java 学习之体系结构介绍
- java io 架构体系
- JDK中个别类的介绍-IO读写(java.io.*)
- 详细介绍Java语言中的IO系统(1)
- java IO 流的整体介绍
- .net中的IO体系介绍
- JAVA之IO流(超详细的Java.io包的介绍!)
- .net中的IO体系介绍
- JDK中个别类的介绍-IO读写(java.io.*)
- Java IO (3) 字节流介绍
- Java的IO系统简明而经典的介绍
- Java的IO系统简明而经典的介绍
- .NET中的IO体系介绍
- JavaIO 3—几个基本的流类介绍(上)
- Java中IO处理类介绍