从Java中的文件位置获取文件名

Ank*_*kur 34 java string url filenames path

我有一个String提供文件的绝对路径(包括文件名).我想得到文件的名称.最简单的方法是什么?

它需要尽可能通用,因为我事先无法知道URL将是什么.我不能简单地创建一个URL对象并使用getFile()- 所有这些都是理想的,如果可能的话 - 因为它不一定是http://前缀,它可以是c:/或类似的东西.

aka*_*okd 81

new File(fileName).getName();
Run Code Online (Sandbox Code Playgroud)

要么

int idx = fileName.replaceAll("\\\\", "/").lastIndexOf("/");
return idx >= 0 ? fileName.substring(idx + 1) : fileName;
Run Code Online (Sandbox Code Playgroud)

请注意,第一个解决方案是系统相关的.它只考虑系统的路径分隔符.因此,如果您的代码在Unix系统上运行并且接收Windows路径,那么它将无法工作.处理Internet Explorer发送的文件上载时就是这种情况.

  • 第一个replaceAll参数是错误的,因为斜杠是Java String和正则表达式中的转义字符.它应该是fileName.replaceAll("\\\\","/")... (10认同)
  • 此外,尽管subString不应该是camel cased并且应该是"substring"全部小写以达到本机String API的子字符串方法,但是这个被接受了多少次,除非你在这里使用其他东西但是应该注意. (3认同)

vic*_*ugo 23

new File(absolutePath).getName();
Run Code Online (Sandbox Code Playgroud)


ska*_*man 18

Apache Commons IO提供了FilenameUtils类,它为您提供了一组非常丰富的实用程序函数,可以轻松获取文件名的各种组件,尽管java.io.File类提供了基础知识.


Seb*_*rez 16

来自Apache Commons IO FileNameUtils

String fileName = FilenameUtils.getName(stringNameWithPath);
Run Code Online (Sandbox Code Playgroud)