如何在 Java 中打开文件?

2024年10月23日 | 阅读 6 分钟

在 Java 中打开文件是一项基本操作,可以通过 Java API 提供的各种类和方法来实现,这些类和方法针对读取或写入等不同的文件操作进行了定制。对于文本文件的读取,FileReader 类与 BufferedReader 结合可以实现高效的逐行读取。对于二进制文件,FileInputStream 提供了一种逐字节读取数据的方式。处理异常,特别是 IOException,对于健壮的文件操作处理至关重要。

在 Java 中打开文件的常见方法有以下几种:

  • Java Desktop 类
  • Java FileInputStream 类
  • Java BufferedReader 类
  • Java FileReader 类
  • Java Scanner 类
  • Java nio 包

Java Desktop 类

Java Desktop 类提供了一个 open() 方法来打开文件。它属于 java.awt 包。Desktop 的实现是平台相关的,因此有必要检查操作系统是否支持 Desktop。Desktop 类会查找本地桌面注册的关联应用程序来处理文件。如果没有关联的应用程序或应用程序启动失败,它会抛出 FileNotFoundException。它会启动用户默认的浏览器来显示指定的 URI。

  • 启动用户默认的邮件客户端,并可选择性地提供一个 mail-to URI。
  • 启动注册的应用程序来打开、编辑或打印指定的文件。

Desktop 类的 open() 方法会启动关联的应用程序来打开一个文件。它接受一个文件作为参数。该方法的签名如下:

该方法会抛出以下异常:

  • NullPointerException: 如果文件为 null。
  • IllegalArgumentException: 当文件不存在时抛出。
  • IOException: 当没有与给定文件类型关联的应用程序时抛出。
  • UnsupportedOperationExecution: 如果当前平台不支持 Desktop.Action.Open 操作。

示例

当我们运行上面的程序时,它会在默认的文本编辑器中打开指定的文本文件。我们也可以打开 .docx、.pdf 和 .jpg 文件。

输出

How to Open a File in Java

Java FileInputStream 类

Java FileInputStream 类用于打开和读取文件。我们可以使用 FileInputStream 类的构造函数来打开和读取文件。构造函数的签名如下:

它接受一个文件作为参数。如果文件不存在或文件名是一个目录,则抛出 FileNotFoundException

当存在一个活动的安全管理器并且它通过 `checkRead` 方法拒绝了对文件的读访问操作时,会发生 `SecurityException`。

示例

输出

How to Open a File in Java

Java BufferedReader 类

Java BufferedReader 类从字符输入流中读取文本。它属于 java.io 包。我们使用 BufferedReader 类的构造函数来打开或读取文件。

它包装了其他 Reader 实例,如 FileReader,通过缓冲输入来提高性能,减少了对底层源的直接读取次数。对于读取大文本文件而言,BufferedReader 通过其方便的 `readLine()` 方法(返回一个包含行内容的字符串,不包含任何行终止字符)提高了读取效率并简化了读取过程。

构造函数的签名如下:

它创建一个使用默认大小输入缓冲区的字符输入流。它使用默认大小的输入缓冲区。

示例

输出

How to Open a File in Java

Java FileReader 类

Java FileReader 类也用于打开和读取文件。它属于 java.io 包。它是读取文件字符的便捷类。它用于使用 FileInputStream 类读取原始字节。我们使用 FileInputStream 类的构造函数来打开和读取文件。

Java 中的 FileReader 类简化了从文件中读取文本的过程,提供了一种直接访问字符数据的方法。与处理原始数据的面向字节的流不同,FileReader 专注于字符,这使得它特别适用于文本文件操作。构造函数的签名如下:

它接受一个文件作为参数。如果指定的文件不存在或文件名是一个目录,则抛出 FileNotFoundException

示例

输出

How to Open a File in Java

Java Scanner 类

Java Scanner 类也用于打开和读取文件。Scanner 类属于 java.util 包。Scanner 类的构造函数用于打开和读取文件。

Java 中的 Scanner 类是一种工具,可以帮助你从文件或用户输入等地方读取和理解文本。它非常方便,因为它可以识别文本并将其转换为不同类型的数据,如数字或单词。构造函数的签名如下:

它接受一个(要扫描的)文件作为参数。如果文件源未找到,它还会抛出 FileNotFoundException

示例

输出

How to Open a File in Java

Java nio 包

readAllLines() 方法: `readAllLines()` 方法是 File 类的方法。它从文件中读取所有行,并将文件中的字节使用 UTF-8 字符集解码为字符。它将文件中的行作为列表返回。该方法的签名如下:

其中 path 是文件路径。

上面的方法等同于调用以下方法:

Collections.emptyList(): `emptyList()` 方法是 Collection 类的方法,属于 java.util 包。它用于获取一个空列表。该方法的签名如下:

示例

输出

How to Open a File in Java
下一个主题Java 教程