A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 梦想蓝色天空 于 2013-5-31 07:49 编辑

File.leng()和inputStream.aviailable()方法使用上有什么区别,感觉都是取得长度的 一般在什么时候用哪个

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

5 个回复

正序浏览
原满 发表于 2013-5-30 16:56
那个方法应该是File.length()吧  另一个应该是FileInputStream.available()
首先 File类是用来操作文件的, ...

非常感谢,你这么一说,顿时明白了好多,谢谢:loveliness:
回复 使用道具 举报
如果问题以解决,请结贴,未解决追加提问。谢谢合作
回复 使用道具 举报
那个方法应该是File.length()吧  另一个应该是FileInputStream.available()
首先 File类是用来操作文件的,而不能访问文件的具体内容 比如文件的删除  判断是否存在等等
File.length()方法是用来返回由此抽象路径名表示的文件的长度

FileInputStream类 是用来操作流的  也就是可以访问文件里的具体内容
FileInputStream类的  read()  以及 read(byte[] b)方法  无论是一次读取一个字节的read()  还是 通过字节数组 一次读取一个 数组内容的 read(byte[] b) 方法,都需要用while循环,来循环读取文件内容, 以read()方法的返回值是否为-1作为判断循环结束的依据  而read 方法是阻塞的 ,每循环一次都要  阻塞,  而FileInputStream.available() 方法返回 可以不受阻塞地从此输入流中读取(或跳过)的估计剩余字节数。这样可以定义一个刚刚好的 byte[]数组(如果返回值不是很大的情况下,否则定义数组过大容易导致内存溢出)  一次从输入流中把全部内容读走,这样不需要用循环,从而提高效率

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
研究的很深,佩服了
回复 使用道具 举报
求教,求真相
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马