类 FileNameUtil

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

public class FileNameUtil extends Object
文件名相关工具类
从以下版本开始:
5.4.1
作者:
looly
  • 字段详细资料

    • CLASSPATH_URL_PREFIX

      public static final String CLASSPATH_URL_PREFIX
      针对ClassPath路径的伪协议前缀(兼容Spring): "classpath:"
      另请参阅:
    • FILE_URL_PREFIX

      public static final String FILE_URL_PREFIX
      URL 前缀表示文件: "file:"
      另请参阅:
    • JAR_URL_PREFIX

      public static final String JAR_URL_PREFIX
      URL 前缀表示jar: "jar:"
      另请参阅:
    • WAR_URL_PREFIX

      public static final String WAR_URL_PREFIX
      URL 前缀表示war: "war:"
      另请参阅:
    • URL_PROTOCOL_FILE

      public static final String URL_PROTOCOL_FILE
      URL 协议表示文件: "file"
      另请参阅:
    • URL_PROTOCOL_JAR

      public static final String URL_PROTOCOL_JAR
      URL 协议表示Jar文件: "jar"
      另请参阅:
    • URL_PROTOCOL_ZIP

      public static final String URL_PROTOCOL_ZIP
      URL 协议表示zip文件: "zip"
      另请参阅:
    • URL_PROTOCOL_WSJAR

      public static final String URL_PROTOCOL_WSJAR
      URL 协议表示WebSphere文件: "wsjar"
      另请参阅:
    • URL_PROTOCOL_VFSZIP

      public static final String URL_PROTOCOL_VFSZIP
      URL 协议表示JBoss zip文件: "vfszip"
      另请参阅:
    • URL_PROTOCOL_VFSFILE

      public static final String URL_PROTOCOL_VFSFILE
      URL 协议表示JBoss文件: "vfsfile"
      另请参阅:
    • URL_PROTOCOL_VFS

      public static final String URL_PROTOCOL_VFS
      URL 协议表示JBoss VFS资源: "vfs"
      另请参阅:
    • JAR_URL_SEPARATOR

      public static final String JAR_URL_SEPARATOR
      Jar路径以及内部文件路径的分界符: "!/"
      另请参阅:
    • WAR_URL_SEPARATOR

      public static final String WAR_URL_SEPARATOR
      WAR路径及内部文件路径分界符
      另请参阅:
    • EXT_JAVA

      public static final String EXT_JAVA
      .java文件扩展名
      另请参阅:
    • EXT_CLASS

      public static final String EXT_CLASS
      .class文件扩展名
      另请参阅:
    • EXT_JAR

      public static final String EXT_JAR
      .jar文件扩展名
      另请参阅:
    • UNIX_SEPARATOR

      public static final char UNIX_SEPARATOR
      类Unix路径分隔符
      另请参阅:
    • WINDOWS_SEPARATOR

      public static final char WINDOWS_SEPARATOR
      Windows路径分隔符
      另请参阅:
  • 构造器详细资料

    • FileNameUtil

      public FileNameUtil()
  • 方法详细资料

    • getName

      public static String getName(File file)
      返回文件名
      参数:
      file - 文件
      返回:
      文件名
      从以下版本开始:
      4.1.13
    • getName

      public static String getName(String filePath)
      返回文件名
       "d:/test/aaa" 返回 "aaa"
       "/test/aaa.jpg" 返回 "aaa.jpg"
       
      参数:
      filePath - 文件
      返回:
      文件名
      从以下版本开始:
      4.1.13
    • getSuffix

      public static String getSuffix(File file)
      获取文件后缀名,扩展名不带“.”
      参数:
      file - 文件
      返回:
      扩展名
      从以下版本开始:
      5.3.8
      另请参阅:
    • getSuffix

      public static String getSuffix(String fileName)
      获得文件后缀名,扩展名不带“.”
      参数:
      fileName - 文件名
      返回:
      扩展名
      从以下版本开始:
      5.3.8
      另请参阅:
    • getPrefix

      public static String getPrefix(File file)
      返回主文件名
      参数:
      file - 文件
      返回:
      主文件名
      从以下版本开始:
      5.3.8
      另请参阅:
    • getPrefix

      public static String getPrefix(String fileName)
      返回主文件名
      参数:
      fileName - 完整文件名
      返回:
      主文件名
      从以下版本开始:
      5.3.8
      另请参阅:
    • mainName

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

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

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

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

      public static String cleanInvalid(String fileName)
      清除文件名中的在Windows下不支持的非法字符,包括: \ / : * ? " < > |
      参数:
      fileName - 文件名(必须不包括路径,否则路径符将被替换)
      返回:
      清理后的文件名
      从以下版本开始:
      3.3.1
    • containsInvalid

      public static boolean containsInvalid(String fileName)
      文件名中是否包含在Windows下不支持的非法字符,包括: \ / : * ? " < > |
      参数:
      fileName - 文件名(必须不包括路径,否则路径符将被替换)
      返回:
      是否包含非法字符
      从以下版本开始:
      3.3.1
    • isType

      public static boolean isType(String fileName, String... extNames)
      根据文件名检查文件类型,忽略大小写
      参数:
      fileName - 文件名,例如hutool.png
      extNames - 被检查的扩展名数组,同一文件类型可能有多种扩展名,扩展名不带“.”
      返回:
      是否是指定扩展名的类型
      从以下版本开始:
      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/     =》    ""
       
      参数:
      dirPath - 父路径
      filePath - 文件路径
      返回:
      相对子路径
    • 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
       
      参数:
      rootDir - 绝对父路径
      file - 文件
      返回:
      相对子路径
    • 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'
       
      参数:
      path - 原路径
      返回:
      修复后的路径
    • isAbsolutePath

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