代码改变世界

输入与输出,

2016-11-16 08:40  backyyan  阅读(209)  评论(0编辑  收藏  举报

流是一个抽像概念,可以理解为输入与输出的途径。在java库类中,I/O部分的内容是很庞大的,有标准输入/输出、文件的操作。网络上的数据流、字符串流、对象流等。

当程序需要读取数据时,就会开通一个通向数据源的流,这个数据源可以使文件、内存、或网络连接。类似的,当程序需要写入数据时,就会开启一个通向目的地的流。

流的概念

流是指同一台计算机或网络中不同计算机之间有序运动着的数据序列,,java把这些不同来源和目标的数据都统一抽像为数据流。流序列中的数据可以是没有进行加工的原始数据(二进制字节数据),也可以是经过编码的符合某种格式的数据。java中的流分两种:一种是字节流,另一种是字符流,分别由4个抽象类来表示(每种流包括输入和输出两种,所以一共四个):InputStream、OutputStream、Reader和Writer。java中其他多样变化的流均是由它们派生出来的。

                                                                                      FileInputStream

                                                                                      PipedInputStream                  [LineNumberInputStream

                                                                                       FilterInputStream--------------[DataInputStream

                                          InputStream                            ByteArrayInputStream         [BufferedInputStream

                                                                                       SequenceInputStream             [PushbckInputStream

                                                                                      StringBufferInputStream

                                                                                       ObjectInputStream

 

                                                                                      FileOutputStream

                                                                                       PipedOutputStream          [DataOutputStream

                                     OutputStream                              FilterOutputStream--------[BufferedOutputStream

                                                                                       ByteArrayOutputStream    [PrintStream

                                                                                       ObjectOutputStream

                                                                                        

                                                                                     BufferedReader----------LineNumberReader

                                                                                     CharArrayReader

                             Reader                                              InputStreamReader---FileReader

                                                                                     FilterReader------------PushbackReader

                                                                                     PipedReader

                                                                                     StringReader

 

                                                                                      BufferedWriter

                                                                                       CharArrayWriter

                                                                                       OutputStreamReader---FileWriter

                                  Writer                                             FilterWriter

                                                                                        PipedWriter

                                                                                       StringWriter

                                                                                       FilterWriter

 

其中InputStream和OutputStream在早期的java版本就已经存在了,它们是基于字节流的,而基于字符流的Reader和Writer是后来加入作为补充的。

流可分为两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,输出流,只能往其中写,而不能读它。

1:输入流

输入流的信息源可以位于文件、内存、网络套接字等地方,信息员的类型可以包括对象,字符,图像,声音在内的任何类型。一旦打开输入流之后,程序就可从输入流串行读取数据。(如上图所示)

  2:输出流

输出流和输入流相似,程序也能通过打开一个输出流并顺序的写入数据,将信息送至目的端。