最近在做实践的时候,越来越多的接触到java的输入输出流。  由于之前上课的时候不踏实,没怎么练习。造成对流的使用不熟悉,每次使用都要去看以前的例子,才能继续往下做。  真是火大。  都是对知识的理解不够造成的。另一方面,这方面的知识也比较多,类结构复杂,一会又是字节读写,一会又是字符读写,一会又是缓冲读写,又是什么包装流,原始流之类的。    尽管这些理论都补充的不要不要的了,但是都是写什么玩意啊,碰到又学碰到又学,烦死人。   今天就怒开一帖,记录下自己的不怎么成熟的见解,方便以后知识的迭代。

    之前看过一些源码,知道了解一个体系,如集合,线程,网络编程等,最好去了解其父类以及父接口。   

    InputStream是一个抽象类,实现了Closeable接口。  是所有与输入(由外界到内存)的父类。  平常常用的,主要的有:

FileInputStream,PipedInputStream,ByteArrayInputStream,StringBufferInputStream.

    OutputStream大同小异,就懒得写了。

    下面记录一下理解:    何谓流?流量,水流   输入流  输出流   听的不要太多。   流的本质: 其实就是字节序列,也就是byte[],里面的内容,即由一个一个的010101等表示的,按照特定的协议读取出来,让程序或结点理解。    在本机内部通过总线流通,在网络中通过tcp/ip体系流通。   流的各种各样乱七八糟的子类,无非就是对 byte[] 进行了一个包装,让其按照把最基本的单位设置为想要的单位。(这个可以通过看inputStream的类及其子类结构证明)

    下面对流的发送进行一个猜想:   流并不能像水流那样,随着重力有一点走一点,那样就乱了套了。应该会在流发送的开始以及结束采用特定的标志,形成一个完整的数据。发送有可能实时,但是如果没有接收到应用程序的完成消息时,接收方要么丢弃该不完整流,什么也不显示。要么显示程序损坏,无法打开。

    对流的读取与写入即 write() 和  read()方法的理解:   方法体内引用的实参为 复合数据类型时,读取的内容即装在该内存地址中,返回值表示的含义为读取到的位置。如 byte[] ,char[],等等。    如果方法体内引用的实参为 基本数据类型时,读取的内容以返回值呈现,寄存器保存,出栈即消亡。