java中FileInputStream的available() 方法的作用是什么?我看了api上面的解释是:返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。我看不大明白,请回答一下,谢谢
①如果要从网络中下载文件时,我们知道网络是不稳定的,也就是说网络下载时,read()方法是阻塞的,说明这时我们用inputStream.available()获取不到文件的总大小。
此时就需要通过
HttpURLConnection httpconn = (HttpURLConnection)url.openConnection();
httpconn.getContentLength();//获取文件长度
来获取文件的大小。
②如果是本地文件的话,用此方法就返回实际文件的大小。
③这个方法其实是通过文件描述符获取文件的总大小,而并不是事先将磁盘上的文件数据全部读入流中,再获取文件总大小。
希望能用心去体会一下,选择性使用
此时就需要通过
HttpURLConnection httpconn = (HttpURLConnection)url.openConnection();
httpconn.getContentLength();//获取文件长度
来获取文件的大小。
②如果是本地文件的话,用此方法就返回实际文件的大小。
③这个方法其实是通过文件描述符获取文件的总大小,而并不是事先将磁盘上的文件数据全部读入流中,再获取文件总大小。
希望能用心去体会一下,选择性使用
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2017-05-23
返回的实际可读字节数,也就是总大小
但是需要注意的是。java虚拟机中的字符是Unicode编码,占两个字符,假如一个txt文档内容为abcde是ASCII码,那么每个字符就是一个字节,所以共5个字节。
注意,class文件中的编码也不是Unicode的,而是utf8的本回答被网友采纳
但是需要注意的是。java虚拟机中的字符是Unicode编码,占两个字符,假如一个txt文档内容为abcde是ASCII码,那么每个字符就是一个字节,所以共5个字节。
注意,class文件中的编码也不是Unicode的,而是utf8的本回答被网友采纳
第2个回答 2012-07-26
返回流中可以读取的字节数
第3个回答 2015-09-29
第4个回答 2012-07-26
一般我是用作判断文件大小来使用。。