流我们可以理解为水流,流的传输就相当于在水管里传输,本篇博客主要介绍流的原理和解析过程,学疏才浅,抛砖引玉,大佬勿喷。
文件流
假设我们收到了一个以Unicode编码的文件流,对于该文件流所表示的内容我们很好奇,那么就需要我们想办法对其进行解析。
已知它的编码方式为Unicode,16bit为一个字符,我们以byte类型数组接收,由于byte类型数组为8bit,即8bit代表一个字符,对于16bit类型的数据我们可以做以下处理:
byte[] arr;
//假设其中的一个字符为w.由于为16bit,我们可以直接使用short类型数据。
即short w = arr[i] << 8 + arr[i]
之后我们可以直接用char x = (char)w;来获取该字符的实际意义。
我们获取到流之后,在操作系统中是如何把它识别成文件的呢?
对于操作系统有现成的对流进行处理的方法,我们在Java中经常见到。。。Stream,该类里就调用了操作系统里的方法,我们可以直接拿来使用。
网络流
Socket是建立网络连接的基础,而网络流是Socket连接之上进行数据传输的方式,在建立连接之后,使用流来进行数据的读写操作,从而实现网络通信。
Socket封装了TCP协议的通讯细节,使用它就可以与远端计算机建立TCP连接.并基于两个流(一个输入 一个输出)与远端计算机进行双向通讯 将Socket比喻为是一部手机 Socket实例化时需要传入两个参数
参数1:服务端的地址信息
参数2:服务端打开的服务端口
客户端通过服务端的地址找到网络上的服务器计算机,通过端口可以连接上该机器上运行的服务端应用程序.