有没有比类似的方法更好的方法来获取文件基名和扩展名
File f = ...
String name = f.getName();
int dot = name.lastIndexOf('.');
String base = (dot == -1) ? name : name.substring(0, dot);
String extension = (dot == -1) ? "" : name.substring(dot+1);
我知道其他人已经提到过String.split
,但这是一个仅产生的变体two令牌(基础和扩展):
String[] tokens = fileName.split("\\.(?=[^\\.]+$)");
例如:
"test.cool.awesome.txt".split("\\.(?=[^\\.]+$)");
Yields:
["test.cool.awesome", "txt"]
正则表达式告诉 Java 在任何句点上进行分割,该句点后跟任意数量的非句点,然后是输入结束。只有一个时期符合这一定义(即last时期)。
技术上 从正则上来说,这种技术称为零宽度正前瞻.
顺便说一句,如果您想分割路径并获取完整的文件名,包括但不限于点扩展名,请使用带有正斜杠的路径,
String[] tokens = dir.split(".+?/(?=[^/]+$)");
例如:
String dir = "/foo/bar/bam/boozled";
String[] tokens = dir.split(".+?/(?=[^/]+$)");
// [ "/foo/bar/bam/" "boozled" ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)