Java IO流详解:InputStream核心方法

需积分: 11 15 下载量 172 浏览量 更新于2024-07-13 收藏 255KB PPT 举报
"本文主要介绍了Java IO中的InputStream类及其基本方法,包括read()、read(byte[])、read(byte[], int, int)、close()和skip(long)。此外,还概述了Java IO流的分类,如字节流、字符流、输入流、输出流,以及节点流和包装流的概念。" 在Java的IO系统中,InputStream是所有字节输入流的基类,它提供了读取字节数据的基本方法。以下是对这些方法的详细说明: 1. `int read()`:此方法读取输入流中的一个字节,并以整数形式返回(0到255之间)。如果到达流的末尾,将返回-1,表示没有更多数据可读。 2. `int read(byte[] buffer)`:这个方法读取一系列字节,并将它们存储到传入的字节数组`buffer`中。返回值是实际读取的字节数,如果已经到达流末尾,则返回-1。 3. `int read(byte[] buffer, int offset, int length)`:这个方法与上一个类似,但允许指定从`buffer`的哪个偏移量开始存储读取的字节,并且可以指定最多读取`length`个字节。同样,返回实际读取的字节数,若达到流末尾则返回-1。 4. `void close()`:这个方法用于关闭流,释放与之关联的任何系统资源。一旦关闭,流将无法再进行读取操作。 5. `long skip(long n)`:此方法用于跳过输入流中的`n`个字节而不读取它们。返回实际跳过的字节数,可能小于请求的`n`,如果到达流末尾则返回0。 Java.IO包中的流被分为多种类型,按照不同的分类标准有: - **方向**:分为输入流和输出流,输入流用于从数据源获取数据,输出流用于向目标写入数据。 - **数据单位**:字节流处理单个字节数据,而字符流处理Unicode字符。 - **功能**:节点流直接与数据源交互,如文件或网络连接,而包装流(过滤流)是在已存在的流之上添加额外功能,如缓冲、转换等。 以下是主要的流类层次结构: - 字节流: - 输入流:InputStream(如FileInputStream、ByteArrayInputStream等) - 输出流:OutputStream(如FileOutputStream、ByteArrayOutputStream等) - 字符流: - 输入流:Reader(如FileReader、BufferedReader等) - 输出流:Writer(如FileWriter、BufferedWriter等) 包装流通常用于增强节点流的功能,例如提供缓冲、错误检测、数据转换等。例如,FilterInputStream是InputStream的一个子类,用于创建过滤器流,它可以附加到其他输入流,以实现更复杂的功能。 InputStream及其相关方法是Java IO编程的基础,理解并熟练使用它们对于处理字节数据的输入至关重要。同时,了解流的分类和层次结构有助于构建高效、灵活的IO处理方案。