在Java中的'。'Filename扩展名之前连接到文件名

时间:2014-01-28 21:47:18

标签: java

我似乎无法找到一种在Java中的“。”扩展名之前连接到文件名的方法,而且我不完全确定如何进行此操作。

我已经尝试过了:

String s = r + "V1";

变量r包含myFile.txt的值且输出为:myFile.txtV1,但我需要实现的是myFileV1.txt,因为我不想用相同的名称覆盖现有文件,但在写入文件时在V1文件扩展名之前连接.

由于

6 个答案:

答案 0 :(得分:9)

如果文件名可以包含多个点,您应该找到lastIndexOf点。然后,您可以从文件名的开头创建子字符串,直到最后一个点,附加其他文本,并从最后一个点追加子字符串。

这应该可以解决问题:

int lastDot = r.lastIndexOf('.');
String s = r.substring(0,lastDot) + "V1" + r.substring(lastDot);

答案 1 :(得分:2)

查看String.indexOf()String.substring()以拆分字符串并重建更新后的版本。

答案 2 :(得分:1)

尝试此操作(假设您的文件名中只有一个'.'):

String[] x = r.split("\\.");
String s = x[0]+"V1."+x[1];

答案 3 :(得分:1)

另一种方法是使用Apache Commons IOFilenameUtils类来获取文件的基本名称和扩展名。

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;

答案 4 :(得分:0)

String s = r.substring(0,r.indexOf(".")) + "V1" + r.substring(a.indexOf("."));

提醒扩展在技术上是特定于平台的。此外,您可能希望为名称和扩展名分别设置变量,并在最后将它们组合在一起。最后需要注意的是,如果文件名中有多个句点符号,则此代码将无效(例如hello.world.txt)

答案 5 :(得分:0)

基于apache commonsStringUtils.substringBeforeLast()的另一种StringUtils.substringAfterLast方法:

String newPath = StringUtils.substringBeforeLast(filePath, ".") +
    "_updated." + StringUtils.substringAfterLast(filePath, ".");

注意:您仍然需要检查文件是否实际包含点字符,否则结果将不一致。