输入流当中的read方法和readfully方法的区别与原理
来源:互联网 发布:抢占式算法视频教程 编辑:程序博客网 时间:2024/06/11 16:44
DataInputStream类中的read(byte[] b)和readFully(byte[] b)读取消息到底有什么区别呢?
下面让我来分析一下:
1.其实read(byte[] b)方法和readFully(byte []b)都是利用InputStream中read()
方法,每次读取的也是一个字节,只是读取字节数组的方式不同,查询jdk中源代码发现
2. read(byte[] b)方法实质是读取流上的字节直到流上没有字节为止,如果当声明的字节数组长度大于流上的数据长度时就提前返回,而readFully(byte[] b)方法是读取流上指定长度的字节数组,也就是说如果声明了长度为len的字节数组,readFully(byte[] b)方法只有读取len长度个字节的时候才返回,否则阻塞等待,如果超时,则会抛出异常 EOFException。
3.那么当发送了长度为len的字节,那么为什么用read方法用户收不全呢,揪其原因我们发现消息在网络中传输是没那么理想的,我们发的那部分字节数组在传送过程中可能在接受信息方的缓存当中或者在传输线路,极端情况下可能在发送方的缓存当中,这样就不在流上,所以read方法提前返回了,这样就造成了各种错误。
- 输入流当中的read方法和readfully方法的区别与原理
- 输入流当中的read方法和readfully方法的区别与原理
- 输入流当中的read方法和readfully方法的区别与原理 -- 一直纠结的socket传输大图片解决的问题所在
- 输入流中的read和readfully方法区别和原理
- read和readFully的区别! .
- read和readFully的区别
- readUTF()和read()方法的区别
- BufferedInputStream的read方法原理
- BufferedInputStream的read方法原理
- Read和ReadLine及数组的输入方法示例
- Read和ReadLine及数组的输入方法示例
- DataInputStream的readUTF 和 readFully
- UITableViewHeaderFooterView当中的方法
- 黑马程序员——关于输入流的read方法。
- AJAX当中GET和POST方法在是现实的区别
- netty当中的release方法
- java-System.in.read()方法与java.util.Scanner类的读取输入差别
- SqlDataReader的Read方法
- 让Windows Server 2008+IIS 7+ASP.NET支持10万个同时请求
- 再谈软件保护中软加密和硬加密的安全强度
- 设计模式五,Observer
- 20条经典编程经验分享
- Objective-C 2.0 新特性一览 – 属性。
- 输入流当中的read方法和readfully方法的区别与原理
- Java中的NIO问题
- 利用大数相乘求幕
- 开发实用的工具-[模拟器] Google Android Emulator
- 简单日志记录文件
- BlackBerry, iPhone, or Android? Pros and cons of mobile devices for business
- JQuery 显示全部及隐藏部分的效果
- C#根据经纬度计算两点距离(单位是千米)
- 根据经纬度求两点间距离实现源码(C#)-非常精确