[英]Get file name from a file location in Java
我有一个String
,它提供文件的绝对路径(包括文件名)。 我想得到文件的名称。 最简单的方法是什么?
它需要尽可能通用,因为我事先无法知道URL将是什么。 我不能简单地创建一个URL对象并使用getFile()
- 尽管这可能是理想的 - 因为它不一定是http://
前缀,它可以是c:/或类似的东西。
new File(fileName).getName();
要么
int idx = fileName.replaceAll("\\\\", "/").lastIndexOf("/");
return idx >= 0 ? fileName.substring(idx + 1) : fileName;
请注意,第一个解决方案是系统相关的。 它只考虑系统的路径分隔符。 因此,如果您的代码在Unix系统上运行并且接收Windows路径,那么它将无法工作。 处理Internet Explorer发送的文件上载时就是这种情况。
new File(absolutePath).getName();
Apache Commons IO提供了FilenameUtils类,它为您提供了一组非常丰富的实用程序函数,可以轻松获取文件名的各种组件,尽管java.io.File类提供了基础知识。
来自Apache Commons IO FileNameUtils
String fileName = FilenameUtils.getName(stringNameWithPath);
这里有两种方式(两者都是OS独立的。)
使用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");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.