首页 > 基础资料 博客日记
FileInputStream类如何知道还有字节没读?(实践示例)
2023-05-10 23:30:23基础资料围观306次
FileInputStream类如何知道还有字节没读?
FileInputStream 类中有一个方法叫做 available(),它可以返回可在不阻塞的情况下从此输入流中读取(或跳过)的估计剩余字节数。因此,通过调用 available() 方法可以获取 FileInputStream 对象中还未被读取的字节数。通过比较已经读取的字节数和文件总的字节数,就可以知道还有多少字节没有被读取。
FileInputStream的available方法实践示例
FileInputStream 类的 available() 方法可以用于获取输入流中还未被读取的字节数。它返回的是一个估计值,并不总是准确的,但通常情况下可以作为参考来使用。
以下是使用实例:
import java.io.*; public class Example { public static void main(String[] args) throws Exception { FileInputStream fis = null; try { fis = new FileInputStream("example.txt"); System.out.println("文件长度为 " + fis.available() + " 字节"); } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { fis.close(); } } } }
在上述示例中,我们创建了一个 FileInputStream 对象,并传入一个文件名 "example.txt"。然后我们调用 available() 方法来获取文件的长度(即还有多少字节没有被读取)。如果成功打开了文件,则会输出文件长度;否则,会输出异常栈信息。
实践示例:
假设现在有一个图片文件 image.jpg,我们要把这个文件的前 4 个字节读出来。可以使用 FileInputStream 的 read() 方法来实现:
import java.io.*; public class Example { public static void main(String[] args) { FileInputStream fis = null; try { fis = new FileInputStream("image.jpg"); int len = 4; // 读取前4个字节 byte[] bytes = new byte[len]; int count = fis.read(bytes, 0, len); System.out.println("已经读取了 " + count + " 个字节,还有 " + fis.available() + " 个字节未读取"); } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
上述示例中,我们创建了一个 FileInputStream 对象来读取 "image.jpg" 文件,并把它的前 4 个字节读取到一个 byte 数组中。然后我们输出已经读取的字节数和还有多少字节未被读取。
标签: