连接到‘;之前的文件名’;Java中的文件扩展名
在Java中,我似乎找不到一种连接到扩展名“.”之前的文件名的方法,我也不完全确定该如何处理 我已经试过:连接到‘;之前的文件名’;Java中的文件扩展名,java,Java,在Java中,我似乎找不到一种连接到扩展名“.”之前的文件名的方法,我也不完全确定该如何处理 我已经试过: String s = r + "V1"; 其中变量r包含myFile.txt的值,输出为:myFile.txtV1,但我需要实现的是myFileV1.txt,因为我不想用相同的名称覆盖现有文件,而是在写入文件时将V1连接到文件扩展名之前 感谢查看并拆分字符串并重新生成更新版本。尝试此操作(假设文件名中只有一个。): 提醒您,扩展在技术上是特定于平台的。此外,您可能希望为名称和扩展名使用单
String s = r + "V1";
其中变量r
包含myFile.txt
的值,输出为:myFile.txtV1
,但我需要实现的是myFileV1.txt
,因为我不想用相同的名称覆盖现有文件,而是在写入文件时将V1
连接到
文件扩展名之前
感谢查看并拆分字符串并重新生成更新版本。尝试此操作(假设文件名中只有一个。
):
提醒您,扩展在技术上是特定于平台的。此外,您可能希望为名称和扩展名使用单独的变量,并在末尾将它们组合在一起。最后一点需要注意的是,如果文件名(例如hello.world.txt)中有多个句号,则此代码将不起作用。另一种方法是使用的类获取文件的基本名称和扩展名
import org.apache.commons.io.FilenameUtils;
...
File file = ...
String filename = file.getName();
String base = FilenameUtils.removeExtension(filename);
String extension = FilenameUtils.getExtension(filename);
String result = base + "-something-here" + "." + extension;
如果文件名可以包含多个点,比如
foo.bar.txt
,您应该找到最后一个点的索引(在这里很有用)
- 要获取从索引0到最后一个点的索引的不带扩展名(
part)的完整文件名,请执行以下操作foo.bar
- 从最后一个点索引获取扩展名(
从最后一个点到字符串末尾的部分).txt
int lastDotIndex = r.lastIndexOf('.');
String s = r.substring(0, lastDotIndex ) + "V1" + r.substring(lastDotIndex);
基于和的另一种方法:
String newPath=StringUtils.substringBeforeLast(filePath,“.”)+
“_updated.”+StringUtils.substringAfterLast(文件路径,”);
注意:您仍然需要检查文件是否确实包含点字符,否则结果将不一致。唯一的问题是,如果文件名缺少扩展名,那么您将添加一个尾随点“”,这很可能是不需要的。
import org.apache.commons.io.FilenameUtils;
...
File file = ...
String filename = file.getName();
String base = FilenameUtils.removeExtension(filename);
String extension = FilenameUtils.getExtension(filename);
String result = base + "-something-here" + "." + extension;
int lastDotIndex = r.lastIndexOf('.');
String s = r.substring(0, lastDotIndex ) + "V1" + r.substring(lastDotIndex);