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

时间:2009-06-18 07:36:03

标签: java url string path filenames

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

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

5 个答案:

答案 0 :(得分:80)

new File(fileName).getName();

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

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

答案 1 :(得分:23)

new File(absolutePath).getName();

答案 2 :(得分:18)

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

答案 3 :(得分:14)

来自Apache Commons IO FileNameUtils

String fileName = FilenameUtils.getName(stringNameWithPath);

答案 4 :(得分:1)

以下是两种方式(两种方式都与操作系统无关。)

使用Paths:自1.7以来

Path p = Paths.get(<Absolute Path of Linux/Windows system>);
String fileName = p.getFileName().toString();
String directory = p.getParent().toString();

在Apache Commons IO中使用FilenameUtils

String name1 = FilenameUtils.getName("/ab/cd/xyz.txt");
String name2 = FilenameUtils.getName("c:\\ab\\cd\\xyz.txt");