黑马程序员技术交流社区

标题: File.leng()和FileinputStream.aviailable()方法使用上有什么区别 [打印本页]

作者: 梦想蓝色天空    时间: 2013-5-29 19:10
标题: File.leng()和FileinputStream.aviailable()方法使用上有什么区别
本帖最后由 梦想蓝色天空 于 2013-5-31 07:49 编辑

File.leng()和inputStream.aviailable()方法使用上有什么区别,感觉都是取得长度的 一般在什么时候用哪个
作者: 梦想蓝色天空    时间: 2013-5-30 07:09
求教,求真相
作者: 袁梦希    时间: 2013-5-30 09:55
研究的很深,佩服了
作者: 原满    时间: 2013-5-30 16:56
那个方法应该是File.length()吧  另一个应该是FileInputStream.available()
首先 File类是用来操作文件的,而不能访问文件的具体内容 比如文件的删除  判断是否存在等等
File.length()方法是用来返回由此抽象路径名表示的文件的长度

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

作者: 刘胜寒    时间: 2013-5-31 00:45
如果问题以解决,请结贴,未解决追加提问。谢谢合作
作者: 梦想蓝色天空    时间: 2013-5-31 07:48
原满 发表于 2013-5-30 16:56
那个方法应该是File.length()吧  另一个应该是FileInputStream.available()
首先 File类是用来操作文件的, ...

非常感谢,你这么一说,顿时明白了好多,谢谢:loveliness:




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2