Class FileName

java.lang.Object
org.miaixz.bus.core.io.file.FileName

public class FileName extends Object
文件名相关工具类
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

  • Constructor Details

    • FileName

      public FileName()
  • Method Details

    • getName

      public static String getName(File file)
      返回文件名
      Parameters:
      file - 文件
      Returns:
      文件名
    • getName

      public static String getName(String filePath)
      返回文件名
       "d:/test/aaa" 返回 "aaa"
       "/test/aaa.jpg" 返回 "aaa.jpg"
       
      Parameters:
      filePath - 文件
      Returns:
      文件名
    • getSuffix

      public static String getSuffix(File file)
      获取文件后缀名,扩展名不带“.”
      Parameters:
      file - 文件
      Returns:
      扩展名
      See Also:
    • getSuffix

      public static String getSuffix(String fileName)
      获得文件后缀名,扩展名不带“.”
      Parameters:
      fileName - 文件名
      Returns:
      扩展名
      See Also:
    • addTempSuffix

      public static String addTempSuffix(String fileName, String suffix)
      增加临时扩展名
      Parameters:
      fileName - 文件名
      suffix - 临时扩展名,如果为空,使用`.temp`
      Returns:
      临时文件名
    • getPrefix

      public static String getPrefix(File file)
      返回主文件名
      Parameters:
      file - 文件
      Returns:
      主文件名
      See Also:
    • getPrefix

      public static String getPrefix(String fileName)
      返回主文件名
      Parameters:
      fileName - 完整文件名
      Returns:
      主文件名
      See Also:
    • mainName

      public static String mainName(File file)
      返回主文件名
      Parameters:
      file - 文件
      Returns:
      主文件名
    • mainName

      public static String mainName(String fileName)
      返回主文件名
      Parameters:
      fileName - 完整文件名
      Returns:
      主文件名
    • extName

      public static String extName(File file)
      获取文件扩展名(后缀名),扩展名不带“.”
      Parameters:
      file - 文件
      Returns:
      扩展名
    • extName

      public static String extName(String fileName)
      获得文件的扩展名(后缀名),扩展名不带“.”
      Parameters:
      fileName - 文件名
      Returns:
      扩展名
    • cleanInvalid

      public static String cleanInvalid(String fileName)
      清除文件名中的在Windows下不支持的非法字符,包括: \ / : * ? " < > |
      Parameters:
      fileName - 文件名(必须不包括路径,否则路径符将被替换)
      Returns:
      清理后的文件名
    • containsInvalid

      public static boolean containsInvalid(String fileName)
      文件名中是否包含在Windows下不支持的非法字符,包括: \ / : * ? " < > |
      Parameters:
      fileName - 文件名(必须不包括路径,否则路径符将被替换)
      Returns:
      是否包含非法字符
    • isType

      public static boolean isType(String fileName, String... extNames)
      根据文件名检查文件类型,忽略大小写
      Parameters:
      fileName - 文件名
      extNames - 被检查的扩展名数组,同一文件类型可能有多种扩展名,扩展名不带“.”
      Returns:
      是否是指定扩展名的类型
    • normalize

      public static String normalize(String path)
      修复路径 如果原路径尾部有分隔符,则保留为标准分隔符(/),否则不保留
      1. 1. 统一用 /
      2. 2. 多个 / 转换为一个 /
      3. 3. 去除左边空格
      4. 4. .. 和 . 转换为绝对路径,当..多于已有路径时,直接返回根路径
      5. 5. SMB路径保留,如\\127.0.0.0\a\b.zip

      栗子:

       "/foo//" = "/foo/"
       "/foo/./" = "/foo/"
       "/foo/../bar" = "/bar"
       "/foo/../bar/" = "/bar/"
       "/foo/../bar/../baz" = "/baz"
       "/../" = "/"
       "foo/bar/.." = "foo"
       "foo/../bar" = "bar"
       "foo/../../bar" = "bar"
       "//server/foo/../bar" = "/server/bar"
       "//server/../bar" = "/bar"
       "C:\\foo\\..\\bar" = "C:/bar"
       "C:\\..\\bar" = "C:/bar"
       "~/foo/../bar/" = "~/bar/"
       "~/../bar" = 普通用户运行是'bar的home目录',ROOT用户运行是'/bar'
       
      Parameters:
      path - 原路径
      Returns:
      修复后的路径