如何在 Java 中获取文件扩展名

在 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 程序通过将文件名拆分为数组来提取文件扩展名。
  • 它获取数组的最后一个元素作为扩展名。
  • 最后,它打印提取的扩展名。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/43590.html
点赞
0.00 平均评分 (0% 分数) - 0