Class FileNameUtil

java.lang.Object
com.luna.common.file.FileNameUtil

public class FileNameUtil extends Object
文件名相关工具类
Since:
5.4.1
Author:
looly
  • Field Details

  • Constructor Details

    • FileNameUtil

      public FileNameUtil()
  • Method Details

    • getName

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

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

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

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

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

      public static String getPrefix(String fileName)
      返回主文件名
      Parameters:
      fileName - 完整文件名
      Returns:
      主文件名
      Since:
      5.3.8
      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:
      清理后的文件名
      Since:
      3.3.1
    • containsInvalid

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

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

      public static String subPath(String dirPath, String filePath)
      获得相对子路径,忽略大小写

      栗子:

       dirPath: d:/aaa/bbb    filePath: d:/aaa/bbb/ccc     =》    ccc
       dirPath: d:/Aaa/bbb    filePath: d:/aaa/bbb/ccc.txt     =》    ccc.txt
       dirPath: d:/Aaa/bbb    filePath: d:/aaa/bbb/     =》    ""
       
      Parameters:
      dirPath - 父路径
      filePath - 文件路径
      Returns:
      相对子路径
    • subPath

      public static String subPath(String rootDir, File file)
      获得相对子路径

      栗子:

       dirPath: d:/aaa/bbb    filePath: d:/aaa/bbb/ccc     =》    ccc
       dirPath: d:/Aaa/bbb    filePath: d:/aaa/bbb/ccc.txt     =》    ccc.txt
       
      Parameters:
      rootDir - 绝对父路径
      file - 文件
      Returns:
      相对子路径
    • normalize

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

      栗子:

       "/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:
      修复后的路径
    • isAbsolutePath

      public static boolean isAbsolutePath(String path)
      给定路径已经是绝对路径
      此方法并没有针对路径做标准化,建议先执行normalize(String)方法标准化路径后判断
      绝对路径判断条件是:
      • 以/开头的路径
      • 满足类似于 c:/xxxxx,其中祖母随意,不区分大小写
      • 满足类似于 d:\xxxxx,其中祖母随意,不区分大小写
      Parameters:
      path - 需要检查的Path
      Returns:
      是否已经是绝对路径