首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 取得檔案副檔名的多種方法與最佳實務

     編輯:Java 相關知識

副檔名解析:從簡單到健壯

取得檔案副檔名看似簡單,實則有許多邊界情況(如 abc.java.txt、無副檔名、隱藏檔)。本文提供三種解法並比較優缺點。

方法一:substring + lastIndexOf(標準做法)

public static String getExtension(String fileName) {
    int dot = fileName.lastIndexOf('.');
    return (dot == -1 || dot == fileName.length() - 1) ? "" : fileName.substring(dot + 1);
}

方法二:Apache Commons IO FilenameUtils(推薦生產環境)

// 依賴:commons-io
String ext = FilenameUtils.getExtension(fileName); // 自動處理邊界情況

方法三:Java 7+ Path API(現代化)

public static String getExtensionModern(String fileName) {
    Path path = Paths.get(fileName);
    String name = path.getFileName().toString();
    int dot = name.lastIndexOf('.');
    return (dot == -1) ? "" : name.substring(dot + 1);
}

邊界測試案例

輸入預期輸出說明
abc.txttxt一般情況
abc.java.txttxt多重點號取最後一段
.gitignoregitignore隱藏檔
README""無副檔名
archive.tar.gzgz雙重副檔名取最後

完整工具類

package com.itheima;

import java.io.File;

public class FileExtensionUtil {
    public static String getExtension(File file) {
        if (!file.isFile()) return "";
        return getExtension(file.getName());
    }

    public static String getExtension(String fileName) {
        int dot = fileName.lastIndexOf('.');
        if (dot <= 0 || dot == fileName.length() - 1) return "";
        return fileName.substring(dot + 1).toLowerCase();
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved