java中FileInputStream与InputStream的available()方法的作用
来源:互联网 发布:电脑软件怎么搬家 编辑:程序博客网 时间:2024/05/17 06:05
available()方法
如果要从网络中下载文件时,我们知道网络是不稳定的,也就是说网络下载时,read()方法是阻塞的,说明这时我们用inputStream.available()获取不到文件的总大小。
此时就需要通过
HttpURLConnection httpconn = (HttpURLConnection)url.openConnection();
httpconn.getContentLength();//获取文件长度
来获取文件的大小。
对于一般的接口调用,可以使用inputStream.available()方法获取返回值的数据的长度大小 如下:
//建立http连接http.connect();//获取输入流InputStream is = http.getInputStream(); //获取信息的长度int size = is.available(); //创建字节数组用来存储流数据byte[] b = new byte[size];//将流数据读入字节数组中is.read(b);
但是在FileInputStream中已经重写了这个方法,重写之后的方法是通过文件的描述来获取文件的大小的。
那么,我们来看看哪些地方可以用available()方法来获取文件大小,进而用来定义缓冲数组的长度。
1.在本地文件文件中,这里我一般是直接使用的。
2.网络中的文件
a.比如web 中http 里面的文件流里面,第一种情况有content-length,那么小文件的情况,我们是直接可以通过request 获取该属性,也就知道文件的大小了。
b.在某些情况下,比如文件比较大,采用采用分段方式,长连接的方式发送,不能一次知道文件大小,http 的header 里面就没有上面的content-length 属性,而是变成了Transfer-Encoding: chunked属性,这表示分段发送信息,但是对整个文件的接受,可以通过一些标志位,或者一些超时限制等方法处理,这里不具体研究了。
c.socket 传输文件,是没重写available方法的,也就是说我们不能通过这个知道流的字节数,一般情况下,我们可以先发送一段自定义的header 过去,描述文件大小,然后再循环持续获取流信息。
- java中FileInputStream与InputStream的available()方法的作用
- java中FileInputStream的available() 方法的作用
- FileInputStream的available方法
- InputStream 中 available() 方法的使用问题
- 关于InputStream中available()方法的问题
- InputStream 中available 的使用
- 关于InputStream 中available()方法的使用问题
- FileInputStream的available() 方法的作用:返回的实际可读字节数,也就是总大小
- Java网络编程中inputStream.available()的使用方法
- Java网络编程中inputStream.available()的使用方法
- new InputStream().available()方法的讲解
- new InputStream().available()方法的讲解 .
- 关于InputStream类的available()方法
- 关于InputStream类的available()方法
- 关于InputStream类的available()方法
- Java 中 FileReader FileInputStream InputStreamReader BufferedReader之间的区别与作用
- Java 中 FileReader FileInputStream InputStreamReader BufferedReader之间的区别与作用
- java基础——bufferedinputstream FileInputStream inputstream的比较
- 递归——从汉诺塔问题谈起
- ios-定时器解析
- 面向对象-简单的继承关系
- html标签:超文本标记语言
- res文件夹各目录
- java中FileInputStream与InputStream的available()方法的作用
- java各种版本的新特性,特别是java8
- 考研日记2017/11/22
- 《Java程序性能优化》第二章 读书笔记 I
- spring中的事务管理(一)
- 跨平台开源项目Ngui【简介】
- 关于《C语言程序设计现代方法》第15章例子“文本格式化”的理解
- 冒泡排序
- rnn的一个例子