您的位置:首页 > 编程语言 > Java开发

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: