簡體   English   中英

JAVA-刪除文件擴展名的最有效方法

[英]JAVA - Most efficient way to remove file extension

我要刪除文件擴展名。 例如:

  • ActualFile = image.png
  • ExpectedFile = image

哪種方法最有效?

  1. org.apache.commons.io提供的removeExtension()方法
  2. fileName.substring(0, fileName.lastIndexOf('.'))

沒有區別,只有一個。 您是否真的要添加整個Apache庫以僅使用一種方法? 如果您在應用程序中使用Apache-那么也要使用它。 如果不是,請創建您的自定義實現,這不是火箭科學。

commons-io中查看removeExtension ,您可以看到substring也以與您描述的相似方式在水下用於該方法:

public static String removeExtension(final String fileName) {
    if (fileName == null) {
        return null;
    }
    failIfNullBytePresent(fileName);

    final int index = indexOfExtension(fileName);
    if (index == NOT_FOUND) {
        return fileName;
    }
    return fileName.substring(0, index);
}

因為執行的操作較少,所以您的方法更快,但是removeExtension方法具有failIfNullBytePresent ,它指出:

檢查輸入是否為空字節,這是未經過處理的數據的標志,將傳遞給文件級功能。

這可用於毒害字節攻擊。

indexOfExtension來獲取具有更多檢查的擴展的索引(如您在此處的該方法的javadoc中所看到的 )。

結論

您的方法更快,但是我想說在各種情況下使用commons-io更為安全/一致,但是使用哪種方法取決於您的情況是否復雜,這是應用程序的關鍵功能還是自己的自制項目。 removeExtension 不是復雜或緩慢的,你不應該深灰色使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM