Java编程那些事儿84——IO简介
第十一章 I/O处理惩罚
I/O(Input/Output)是输入和输出的简称,在Java语言中所有和输入输出有关的都属于IO处理惩罚技能,譬喻包括文件的读写和网络数据的发送等。
其实整个计较机实现成果时最主要的就是IO,用户利用鼠标、键盘等输入设备向措施输入数据,措施举办必然的逻辑处理惩罚,然后再将处理惩罚功效以必然的形式显示到显示器等输出设备上。
I/O处理惩罚技能是Java语言中实现文件操纵、内存操纵、节制台输入以及网络编程的基本,可是由于I/O技能自己的设计原因,也使得I/O处理惩罚技能的难度较量大,需要耗费较量大的精神举办进修。
11.1 I/O简介
IO是输入和输出的简称,在实际的利用时,输入和输出是有偏向的。就像现实中两小我私家之间乞贷一样,譬喻A乞贷给B,相对付A来说是借出,而相对付B来说则是借入。所以在措施中提到输入和输出时,也需要区分清楚是相对的内容。
在措施中,输入和输出都是相对付当前措施而言的,譬喻从硬盘上读取一个设置文件的内容到措施中,则相当于将文件的内容输入到措施内部,因此输入和“读”对应,而将措施中的内容生存到硬盘上,则相当于将文件的内容输出到措施外部,因此输出和“写”对应。熟悉输入和输出的对应干系,将有助于后续内容的进修。
在Java语言中,输入和输出的观念要比其它语言的输入和输出的观念涵盖的内容遍及得多,不只包括文件的读写,也包括网络数据的发送,甚至内存数据的读写以及节制台数据的吸收等都由IO来完成。
为了使输入和输出的布局保持统一,从而利便措施员利用IO相关的类,在Java语言的IO类设计中引入了一个新的观念——Stream(流)。
由于在举办IO操纵时,需要操纵的种类许多,譬喻文件、内存和网络毗连等,这些都被称作数据源(data source),对付差异的数据源处理惩罚的方法是纷歧样的,假如直接交给措施员举办处理惩罚,对付措施员来说则显得较量巨大。
所以在所有的IO类设计时,在读数据时,JDK API将数据源的数据转换为一种牢靠的数据序列,在写数据时,将需要写的数据以必然的名目写入到数据序列,由JDK API完成将数据序列中的数据写入到对应的数据源中。这样由系统完成巨大的数据转换以及差异数据源之间的差异的调动,从而简化措施员的编码。
IO的这种设计就和都市中的供水和排水系统设计是一样的,在供水的时候,水源有江河水、湖水和地下水等差异范例,由自来水公司完成把水源转换为对应的水流。而在排水系统设计时,只需要将污水排入污水管道即可,至于这些污水是怎么被处理惩罚的,则不需要体贴,这样也简化了家庭用水的处理惩罚。
IO设计中这种数据序列被形象的称作流(Stream)。通过利用流的观念,使措施员面临差异的数据源时只需要成立差异的流即可,而底层流实现的巨大性则由系统完成,从而使措施员不必深入的相识每种数据源的读写方法,从而低落了IO编程的巨大度。
在整个IO处理惩罚中,读数据的进程分为两个步调:1、将数据源的内容转换为流布局,该步调由JDK API完成,措施员只需要选择符合的流范例即可。2、从流中读取数据,该步调由措施员完成,流中数据的顺序和数据源中数据的存储顺序保持一致。
写数据的进程也分为两个步调:1、为毗连指定的数据源而成立的专门的流布局,该步调由JDK API完成,措施员只需要选择符合的流范例捷克。2、将数据以必然的名目写入到流中,该步调由措施员完成,写入流中的数据的顺序就是数据在数据源中的存储顺序。最后,当数据写入流中今后,可以通过必然的方法把流中的数据写入数据源,可能当流被封锁时,系统会自动将流中的数据写入数据源中。
这样,在整个IO类设计时,将最巨大的和数据源操纵的部门由JDK API举办完成,而措施员举办编程时,只需要选择符合的流范例,然后举办读写即可。
和现实的布局一样,IO中的流也是有偏向的,用于读的流被称作输入流(Input Stream),用于写的流被称作输出流(Output Stream)。则举办读写的时候需要选择符合的流工具举办操纵。
而由于Java语言利用面向工具技能,所以在实现时,每个流范例都利用专门的类举办代表,而把读或写该范例数据源的逻辑封装在类的内部,在措施员实际利用时建设对应的工具就完成了流的结构,后续的IO操纵则只需要读或写流工具内部的数据即可。这样IO操纵对付Java措施员来说,就显得较量简朴,并且较量容易操纵了。