InputStream的available方法是怎么计数的,能举个例子和我详细介绍一下吗?
时间: 2023-03-20 15:03:00 浏览: 83
`InputStream`类中的`available()`方法返回的是当前可以从输入流中读取的字节数。它并不是准确的值,因为`available()`方法只是估计可读的字节数,因此不应该依赖于它返回的精确字节数。
下面是一个例子:
```
InputStream inputStream = new FileInputStream("example.txt");
int availableBytes = inputStream.available();
System.out.println("可读取字节数:" + availableBytes);
```
在上面的例子中,我们首先使用`FileInputStream`类创建了一个输入流,该输入流读取名为"example.txt"的文件。然后,我们调用`available()`方法获取可读取的字节数并将其打印到控制台。
假设我们的"example.txt"文件包含以下内容:
```
Hello World
```
当我们运行上述代码时,它将输出以下内容:
```
可读取字节数:12
```
`available()`方法返回12,因为在这个例子中,"example.txt"文件中有12个字节可供读取。
值得注意的是,`available()`方法只是估计可读取的字节数,这意味着即使它返回了非零值,也不能保证在读取字节时不会发生阻塞。例如,当使用网络或管道时,它可能会阻塞直到有更多的数据可用。因此,您应该在使用`available()`方法时小心,而不应该依赖它返回的精确字节数。
阅读全文