本文档介绍了Java中的IO框架,特别是关于流的概念和分类,以及File类的使用。
在Java中,IO框架是用于处理输入和输出操作的重要部分,它允许程序与各种类型的输入源(如硬盘、网络、内存等)进行数据交换。流是这个框架的核心概念,它扮演着内存与存储设备之间传输数据的通道的角色。
流的分类主要基于两个维度:
1. 按数据传输的方向:
- 输入流:从外部存储设备(如磁盘、网络等)读取数据到内存中。
- 输出流:将内存中的数据写入外部存储设备。
2. 按数据处理单位:
- 字节流:以8位字节为基本单位,可以处理任何类型的数据。
- 字符流:以字符为单位,主要用于处理文本数据。字符流也可以通过字节流来处理,特别是涉及编码转换的情况。
3. 按功能:
- 节点流:直接与数据源或目的地交互,实现实际的数据读写。
- 过滤流(也称为装饰器流):在节点流的基础上添加额外的功能,如缓冲、转换、压缩等。
`File`类是Java中用于表示文件和目录的一个核心类,提供了丰富的API来操作文件和目录:
- `createNewFile()`:创建一个新的文件,如果文件已存在则失败。
- `mkdir()`:创建一个新目录,仅能创建单层目录,无法创建多级目录结构。
- `delete()`:删除文件或空目录。
- `exists()`:检查文件或目录是否存在。
- `getAbsolutePath()`:返回文件或目录的绝对路径。
- `getName()`:获取文件或目录的名称。
- `getParent()`:获取文件或目录所在的上级路径。
- `isDirectory()` 和 `isFile()`:分别检查是否为目录或文件。
- `length()`:返回文件的大小(以字节为单位)。
- `listFiles()`:返回目录下的所有文件和子目录的`File`对象数组。
- `renameTo(File dest)`:将文件或目录重命名为指定的`File`对象。
- `createTempFile(String prefix, String suffix)`:在默认的临时文件目录下创建一个带有指定前缀和后缀的临时文件。
在实际使用中,`File`类的方法通常结合输入/输出流一起工作,以实现读取、写入、移动或删除文件等操作。例如,以下代码创建了一个名为“abc.txt”的文件,并输出了它的名称:
```java
File f = new File("abc.txt"); // 创建文件对象
System.out.println(f.getName()); // 输出文件名
```
为了进一步操作文件,例如读取或写入内容,我们需要使用特定的输入/输出流,如`FileInputStream`和`FileOutputStream`。过滤流如`BufferedReader`和`BufferedWriter`则可以提供性能优化和易用性增强。Java的IO框架提供了强大的文件操作能力,满足各种复杂场景的需求。