在 Java 中,文件扩展名是指文件名中“.”后面的字符。它表示文件的类型。例如,在文件名 document.pdf 中,文件扩展名是 pdf。这表明该文件是一个 PDF 格式的文件。
在本文中,我们将学习如何在 Java 中获取文件扩展名。
示例输入和输出:
> 输入:filePath = "\Users\Documents\document.txt"
> 输出: txt
>
>
>
> 输入:filePath = "\Users\Documents\image.png"
> 输出: png
>
>
>
> 输入:filePath = "\Users\Documents\config_file"
> 输出: No extension(无扩展名)
点号将文件名与其文件扩展名分隔开。例如,“picture.jpg”的扩展名是“jpg”,这告诉我们它是一个图像文件。通过提取此扩展名,我们的程序可以确定文件的类型,进而采取行动,例如使用正确的软件打开它或根据其格式处理其内容。
**正则表达式:** fileName.fileExtention
在 Java 中获取文件扩展名的程序
Java 提供了多种方法来完成此任务。以下是三种最常见的方法:
方法 1:手动操作字符串
在这种方法中,我们可以利用字符串操作来查找点号“.”的实例。然后提取其后的字符。它不依赖任何库。对于简单的情况,这种方法很简单。但它确实需要处理特殊情况,例如没有扩展名的文件或包含多个点的文件。
示例: 在本例中,我们将通过手动操作字符串来查找给定文件的扩展名。
// Java program to get the file extension
// By manipulating String manually
import java.nio.file.Path;
public class StringManipulationExtractor {
public static void main(String[] args) {
// specify a file path
String filePath = "C:\\Users\\Documents\\myFile.txt";
// extract the filename from the path
String filename = filePath.substring(filePath.lastIndexOf(‘\\‘) + 1);
// find the last occurrence of ‘.‘ in the filename
int dotIndex = filename.lastIndexOf(‘.‘);
String extension = (dotIndex > 0) ? filename.substring(dotIndex + 1) : "";
System.out.println("Extension: " + extension);
}
}
输出
Extension: txt
#### 上述程序的说明:
- 这个 Java 程序通过手动操作字符串从给定的文件路径中提取文件扩展名。
- 它首先从路径中提取文件名,然后在文件名中查找最后一次出现的“.”以确定扩展名。
- 最后,它打印出提取的扩展名。
方法 2:使用 Java 8 Streams
该技术利用流功能使用点号“.”分隔文件名,并获取表示扩展名的部分。这种方法对于熟悉流的人来说简洁明了。它可以与其他流操作结合使用。然而,它需要 Java 8 或更高版本。在处理大型数据集时,其效率可能会降低。
示例: 在本例中,我们将通过 Java 流来查找给定文件的扩展名。
// Java program to get the file extension using Stream
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
class Java8StreamsExtractor {
public static void main(String[] args) {
// Specify a file path
String filePath = "C:\\Users\\Documents\\report.pdf";
// Create a Path object for robust path handling
Path path = Paths.get(filePath);
// Extract the filename from the Path and split it into parts
String[] filenameParts = path.getFileName().toString().split("\\.");
// Extract the extension using a stream and reduce it to the last part
String extension = Arrays.stream(filenameParts)
.reduce((a, b) -> b)
.orElse("");
System.out.println("Extension: " + extension);
}
}
输出
Extension: pdf
#### 上述程序的说明:
- 这个 Java 程序使用 Java 8 流从给定的文件路径中提取文件扩展名。
- 它使用点号将文件名拆分为多个部分,然后使用流提取最后一部分,即扩展名。
- 最后,它打印出提取的扩展名。
方法 3:使用 split() 方法
Java 的包中的 Path 类提供了一种方法(通过 getFileName().toString().split("\\.")),允许直接访问文件扩展名。这种方法简洁且可靠,尽管它假设熟悉 Path 类。对于熟悉 Java NIO 库的开发人员来说,这种方法提供了一种方便且高效的解决方案来提取文件扩展名。
示例: 在本例中,我们将通过字符串 split 方法来查找给定文件的扩展名。
// Java program to get the file extension using split method
import java.nio.file.Path;
import java.nio.file.Paths;
class SplitMethodExtractor {
public static void main(String[] args) {
// Specify a file path
String filePath = "C:\\Users\\Documents\\archive.zip";
// Create a Path object
Path path = Paths.get(filePath);
// Get the file name and split it
String[] parts = path.getFileName().toString().split("\\.");
// Check if extension exists and get it
String extension = (parts.length > 1) ? parts[parts.length - 1] : "No extension";
System.out.println("Extension: " + extension);
}
}
输出
Extension: zip
#### 上述程序的说明:
- 这个 Java 程序通过将文件名拆分为数组来提取文件扩展名。
- 它获取数组的最后一个元素作为扩展名。
- 最后,它打印提取的扩展名。