网络流与文件流的可用字节数available的用法
来源:互联网 发布:游戏制作软件 编辑:程序博客网 时间:2024/04/27 15:47
在网络流中如果不使用任何标记,是不知道流是否结束的。但在读到网络流时,我们是可以知道这次可以读多少字节的内容,方法就是使用inputStream.available (),但一定要在调用read()至少一次之后,也就是说available方法一定要在read后调用,不然就只能得到零值。注,这里所的是网络传输中的流是这样,但文件流不是这样的,文件流可以直接使用available来判断还有多少字节的内容可读取。
InputStream的available()含义:返回此输入流在不受阻塞情况下能读取的字节数。网络流与文件流不同的关键就在于是否“受阻”二字,网络socket流在读取时如果没有内容read()方法是会受阻的,所以从socket初始化的输入流的available也是为零的,所以要read一字节后再使用,这样可用的字节数就等于 available + 1。但文件读取时read()一般是不会受阻的,因为文件流的可用字节数available = file.length(),而文件的内容长度在创建File对象时就已知了。
注:类InputStream的available方法总是返回0。
网络socket输入流可用字节数代码所示:
- //将接收到的数据存到字节数组array
- int firstChar = inputStream.read();
- int length = inputStream.available();
- byte[] array = new byte[length+1];
- array[0] = (byte)firstChar;
- inputStream.read(array,1,length);
//将接收到的数据存到字节数组arrayint firstChar = inputStream.read();int length = inputStream.available();byte[] array = new byte[length+1];array[0] = (byte)firstChar;inputStream.read(array,1,length);
文件流的可用字节数如代码所示:
- FileInputStream fi = new FileInputStream("e:/tmp/tmp");
- //循环读出所有文件内容,可以在read前就直接使用
- while (fi.available() > 0) {
- System.out.println((byte) fi.read());//直接输出内容的编码,而非字符编码。可能为负,如二进制的图片文件
- }
- fi.close();
转自 http://jiangzhengjun.iteye.com/blog/509900
- 网络流与文件流的可用字节数available的用法
- 网络流与文件流的可用字节数available的用法
- 车联网项目总结--网络(socket)流与文件流的可用字节数available用法
- Java 文件与字节流(InputStream.available()在本地文件和网络文件的异同)
- @available 和 #available的用法
- 获取文件的字节数
- c++,java,php,c# 的网络字节流读写文件
- Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutputStream用法)
- Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutputStream用法)
- Java字节序,java整型数与网络字节序 byte[] 数组转换关系(ByteArrayOutputStream用法)
- FileInputStream的available() 方法的作用:返回的实际可读字节数,也就是总大小
- 文件字节流的复制
- 字节流的复制文件
- 文件读写的字节数问题
- 如何获取文件的字节数?
- 计算文件字节数的方法
- 字节流与字符流的详解,文件流,数据流
- java整型数与网络字节序的 byte[] 数组转换关系
- smarty总结
- java的反射
- JSON是什么?为JavaScript准备的数据格式
- MySQL使用bigint
- 有关likely和unlikely
- 网络流与文件流的可用字节数available的用法
- PostgreSQL Memory for Database Caching(1)
- MySQL学习笔记——FAQ
- 重启程序
- Linux 下mount应用
- 快速排序
- 动态库和静态库的生成
- Ubuntu11.04下编译ffmpeg,利用SDL1.2播放视频
- JS实现切换标签页