繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM