使用Java8在文件名和扩展名之间添加中缀的路径
在我的代码中,我想转换表单的路径
/a/path/to/a/file/image.jpg
到
/a/path/to/a/file/image_resized.jpg
目前,我正在使用以下代码,它使用来自ApacheCommonsIO的FilenameUtils
public Path resize(Path original) {
String baseName = FilenameUtils.getBaseName(original.toString());
String extension = FilenameUtils.getExtension(original.toString());
return Paths.get(original.getParent().toString(), baseName + "_resized." + extension);
}
我想知道是否可以使用java 8功能增强其中一些代码,具体来说:
- 是否有一种java-8方法可以提取扩展名和basename,而不使用对Apache Commons IO(FilenameUtils)的依赖,也不使用正则表达式(我更喜欢依赖Apache Commons IO而不是使用正则表达式)
- 连接到
Paths.get(existingPath.toString(), "path/to/append");
中没有toString()
的路径
问题的第二部分在Combine paths in Java中得到答复
# 1 楼答案
这个怎么样?可以使用Path#resolveSibling(String)获取相对于
original
路径的路径。并使用Path#getFileName获取路径中的文件名感谢@Holger,我指出我可以使用regex
"(.*?)(\\.[^.]+)?$"
输出
# 2 楼答案
对于这样一个小而简单的任务IMO,您不需要一个库(而且没有java-8不支持这个);我也不知道为什么正则表达式是不可能的
# 3 楼答案
我确信Java8没有任何东西可以处理这个问题。也许您可以从Guava签出文件API
Files.getFileExtension(fileName)
# 4 楼答案
因此,我将您的答案合并到以下内容中:
首先,在java(other stackoverflow question)中提取文件扩展名时,似乎没有java构建的方法
然后使用
String.lastIndexOf()
是获得扩展(Eugene)的一种简单可靠的方式。最后,使用Path.resolveSibling()
(holi-java)将新文件名与父路径连接起来结果代码:
# 5 楼答案
这个问题可以通过使用简单的字符串操作来解决,这样的东西不需要库。解决这个问题的方法之一是: