Java.io.File.length() 和 InputStream.available() 得出的值是一样的吗?在写文件的时候既要用InputStream流,又要知道File的length ,可不可以直接用流和流的available()?
解决方案 »
- 关于sychronized,面试题
- tomcat/jboss启动java.io.EOFException
- applet不能正常运行,不知怎么解
- 如何从class对象得到对应class文件的实际载入路径?
- 如何用JAVA才能实现粘贴功能?
- JavaScript与Applet交互的导致IE死掉的问题。
- JAVA中调用oracle存储过程
- 为什么我的类似程序总会出现这样的错误?急死我了!!!!!
- java编译器的问题
- 一个可以接收键盘事件的application修改成applet用IE查看时就无法接收键盘事件,请问应该如何处理?
- 新手问题~Timer与KeyListener一起用时,Timer的延时问题
- java sort 方法 排序后 输出全为0
而 InputSteam#available 表示是在输入流中读取数据直接阻塞时的大小。
File length()返回的是一个固定的值,但是如果InputStream整在读取数据时,不同时刻的InputStream.available()值不尽相同
返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。下一个调用可能是同一个线程,也可能是另一个线程。一次读取或跳过此估计数个字节不会受阻塞,但读取或跳过的字节数可能小于该数。
length()返回文件的长度
此抽象路径名表示的文件的长度,以字节为单位写文件时,随着文件的写入,文件的内容多了,长度也会变长。但,一般文件流都有一个缓冲,与available()估计下次操作是否阻塞有关。
public long length()返回由此抽象路径名表示的文件的长度。如果此路径名表示一个目录,则返回值是不确定的。 返回:
此抽象路径名表示的文件的长度,以字节为单位;如果文件不存在,则返回 0L。对于表示特定于系统的实体(比如设备或管道)的路径名,某些操作系统可能返回 0L。
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读访问available
public int available()
throws IOException返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。下一个调用可能是同一个线程,也可能是另一个线程。一次读取或跳过此估计数个字节不会受阻塞,但读取或跳过的字节数可能小于该数。
注意,有些 InputStream 的实现将返回流中的字节总数,但也有很多实现不会这样做。试图使用此方法的返回值分配缓冲区,以保存此流所有数据的做法是不正确的。 如果已经调用 close() 方法关闭了此输入流,那么此方法的子类实现可以选择抛出 IOException。 类 InputStream 的 available 方法总是返回 0。 此方法应该由子类重写。
返回:
可以不受阻塞地从此输入流读取(或跳过)的估计字节数;如果到达输入流末尾,则返回 0。
抛出:
IOException - 如果发生 I/O 错误。