- 文本文件:包含 ASCII 或 Unicode 字符,可用作源代码、文档或日志文件。
- 二进制文件:包含非文本数据,例如图像、音频或可执行代码。
文件流
文件流是连接程序和文件的数据通道。Java 提供两种主要类型的流:
- 字节流:处理原始字节,适用于二进制文件。
- 字符流:以字符为单位处理文本,适用于文本文件。
文件读写
读取文件:
FileInputStream
(字节流)或FileReader
(字符流):打开文件以读取模式。read()
或readLine()
方法:从文件中读取字节或字符。
写入文件:
FileOutputStream
(字节流)或FileWriter
(字符流):打开文件以写入模式。write()
或println()
方法:向文件中写入字节或字符。
文件创建和删除
File
类:表示文件或目录。createNewFile()
方法:创建新文件。delete()
方法:删除文件。
目录操作
File
类:还可表示目录。list()
或listFiles()
方法:获取目录中的文件列表。mkdir()
方法:创建目录。
文件路径和绝对路径
- 文件路径:指定文件相对于当前目录的位置。
- 绝对路径:指定文件系统中的完整路径。
缓冲
缓冲是临时存储数据的机制,可提高文件操作的性能。
- 缓冲输入流:
BufferedReader
(字符流)或BufferedInputStream
(字节流)。 - 缓冲输出流:
BufferedWriter
(字符流)或BufferedOutputStream
(字节流)。
异常处理
文件操作可能抛出异常,例如文件未找到、权限不足或磁盘空间不足。使用 try-catch
块或 throws
声明来处理异常。
最佳实践
- 使用自动资源管理(ARM)或
finally
块来确保文件在操作后关闭。 - 在文件操作之前检查文件权限。
- 考虑使用缓冲来提高性能。
- 谨慎处理异常,并提供有用的错误消息。
扩展功能库
Java NIO 2(New I/O 2)库提供了更高级的文件操作功能,包括:
- 通道(
Channel
):提供更高效的文件访问。 - 文件锁(
FileLock
):用于同步文件访问。 - 文件属性(
FileAttributeView
):用于读取和设置文件属性。