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