"Java核心逻辑第14章聚焦于文件和I/O流,特别是FileInputStream字节输入流的使用。本章介绍了File类的基本操作,包括文件路径的表示、构造方法以及一系列的方法,如创建、删除、检查文件或目录的存在等。接着,深入探讨了I/O流的概念,区分了字节流和字符流,并详细讲解了字节流,特别是FileInputStream,它是处理文件输入的核心类,提供了读取文件字节的方法。"
在Java中,`FileInputStream`是字节输入流的一个重要实现,用于从文件系统中读取数据。字节流处理数据的基本单位是字节,因此可以处理任意类型的文件。`FileInputStream`有以下常见的构造方法:
1. `FileInputStream(String filename)`: 通过指定文件路径来创建输入流。
2. `FileInputStream(File file)`: 使用已有的`File`对象来创建输入流。
`FileInputStream`提供了多种读取数据的方法:
1. `int read()`: 读取单个字节,返回值是读取到的字节(0-255之间),如果没有更多数据则返回-1。
2. `int read(byte[] bs)`: 读取一定数量的字节并存入字节数组`bs`中,返回实际读取的字节数。
3. `int read(byte[] bs, int off, int len)`: 类似于前一个方法,但允许指定字节数组的偏移量`off`和要读取的长度`len`。
I/O流在Java中被分为两大类:输入流和输出流。输入流负责从源(如文件、网络连接)读取数据,而输出流负责向目标(如文件、网络连接)写入数据。字节流和字符流是这两类流的两个子类。字节流处理原始的8位字节数据,包括`InputStream`和`OutputStream`作为抽象基类。`FileInputStream`和`FileOutputStream`分别是它们的实现,分别用于文件的读和写。
字节流中的`InputStream`家族包括`FileInputStream`,用于从文件读取数据;而`OutputStream`家族中的`FileOutputStream`则用于向文件写入数据。`FileOutputStream`也有相应的构造方法和写入数据的方法,如`write(int b)`,`write(byte[] bs)`,`write(byte[] bs, int off, int len)`等,这些方法用于将字节写入到文件中。
了解了这些基本概念后,开发者能够有效地进行文件操作,无论是读取还是写入,都能够游刃有余地处理各种数据类型和文件。在实际编程中,通常还会结合异常处理和关闭流的操作,以确保资源的正确释放和程序的健壮性。