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

Java 文件名處理工具類:獲取不帶後綴名稱與擴展名

     編輯:Java 程式設計入門

Java 文件名截取實用方法

文件名處理是日常開發高頻需求。本文提供兩個健壯的工具方法:獲取不帶後綴的文件名、獲取文件擴展名,並處理了邊界情況。

方法一:獲取不帶後綴的文件名

/**
 * 獲取不帶擴展名的文件名
 * @param fileName 完整文件名
 * @return 不帶後綴的文件名,若無後綴則返回原名
 */
public static String getFileNameWithoutExtension(String fileName) {
    if (fileName == null || fileName.isEmpty()) {
        return fileName;
    }
    
    int dotIndex = fileName.lastIndexOf('.');
    // 檢查:存在點號、不是第一個字符、不是最後一個字符
    if (dotIndex > 0 && dotIndex < fileName.length() - 1) {
        return fileName.substring(0, dotIndex);
    }
    return fileName;
}

方法二:獲取文件擴展名

/**
 * 獲取文件擴展名(不含點號)
 * @param fileName 完整文件名
 * @return 擴展名,若無則返回原文件名
 */
public static String getExtensionName(String fileName) {
    if (fileName == null || fileName.isEmpty()) {
        return fileName;
    }
    
    int dotIndex = fileName.lastIndexOf('.');
    // 檢查:存在點號、不是第一個字符、不是最後一個字符
    if (dotIndex > 0 && dotIndex < fileName.length() - 1) {
        return fileName.substring(dotIndex + 1);
    }
    return "";
}

邊界情況測試

輸入文件名不帶後綴名稱擴展名說明
document.pdfdocumentpdf標準情況
archive.tar.gzarchive.targz多重後綴,取最後一個
.gitignore.gitignore隱藏文件,無主文件名
READMEREADME無後綴
config.config.以點結尾,無擴展名
nullnullnull空值保護

核心邏輯說明

  1. 使用 lastIndexOf:從右向左查找最後一個點號,正確處理多重後綴(如 .tar.gz)
  2. 邊界檢查:dotIndex > 0 排除隱藏文件;dotIndex < length - 1 排除以點結尾的情況
  3. 空值防護:入參為 null 或空字符串時直接返回,避免 NPE

進階版:支援路徑輸入


public static String getFileNameWithoutExtensionFromPath(String filePath) {
    if (filePath == null || filePath.isEmpty()) {
        return filePath;
    }
    // 先提取文件名(處理路徑分隔符)
    String fileName = new File(filePath).getName();
    return getFileNameWithoutExtension(fileName);
}

最佳實踐建議

  • 優先使用 Apache Commons IO FilenameUtils 或 Guava Files 等成熟庫
  • 自行實現時務必編寫單元測試覆蓋上述邊界情況
  • 注意跨平台路徑分隔符差異(Windows \\ vs Unix /)

這兩個方法簡潔高效,經過邊界測試驗證,可直接集成到項目工具類中使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved