流的理解

 

流是什么?流,是一个很重要的概念,暂时理解为流是Java通信中一个很抽象的机制,代表一个单向通道的一个端点。可以从通信通道中读出数据,也可以向通信通道中写入数据。流分两类:输入流和输出流。

 

什么是通信通道?一般通信通道通常可以将输出流与对应的输入流连接起来,所有写入输出流的信息都能依次从输入流中读取出来。这个连接可以是这几种方式:网络连接、不同进程之间的内存缓冲区、文件等。

有些说法,叫这个也可叫做一种数据源,这些数据源,我们分成而下的几种,字节数组,String对象,文件,管道,工作方式与实际管理相似,其它的数据源如Internet连接。对应每个数据源都会有相对应的子类。

 

为什么要用流呢?流为应用程序提供一个统一的数据接口,而不用考虑具体使用什么样的通信通道。

 

java的流是怎样的?都在I/O类由java.io包提供。

 

有什么特点?

1.先进先出

2.顺序存取【一个接一个地写入一串字节】

3.只读或只写【输出流将数据写入通道,输入流从通道中读出数据】

      对于一个网络中,打一个网络连接,实际上是获得了两个流,一个是从网络中读取数据的输入流,而另一   个则是数据写入到网络的输出流。

4.阻塞

     阻塞是线程进入了睡眠状态,什么原因让线程进入睡眠呢?有两个情况,首先想读的数据没有;然后就是想写而不能马上去写。

     一个例子,当线程要求我们去输入信息的时候,那它就得等我们真的去敲击键盘去输入信息了,只有输入了信息它才能读到信息,在我们输入信息的过程中,线程是阻塞的。

 

相对于字节流另一种叫字符流?

      字符流以和一般的流传输字节型数据一样的方式传输16位Unicode字符。对于完全基于文本的通信,推荐使用字符流。这里提供了作为字节流和字符流之间的接口的通道转换类。它们可用来连接到非Unicode系统,如本地文件或网络流。这转换类统一性允许文本很容易从Unicode编码方式转换成ASCII,ISO Latin1,字符或其它合适的字节编码方式。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值