Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接到‘;之前的文件名’;Java中的文件扩展名_Java - Fatal编程技术网

连接到‘;之前的文件名’;Java中的文件扩展名

连接到‘;之前的文件名’;Java中的文件扩展名,java,Java,在Java中,我似乎找不到一种连接到扩展名“.”之前的文件名的方法,我也不完全确定该如何处理 我已经试过: String s = r + "V1"; 其中变量r包含myFile.txt的值,输出为:myFile.txtV1,但我需要实现的是myFileV1.txt,因为我不想用相同的名称覆盖现有文件,而是在写入文件时将V1连接到文件扩展名之前 感谢查看并拆分字符串并重新生成更新版本。尝试此操作(假设文件名中只有一个。): 提醒您,扩展在技术上是特定于平台的。此外,您可能希望为名称和扩展名使用单

在Java中,我似乎找不到一种连接到扩展名“.”之前的文件名的方法,我也不完全确定该如何处理

我已经试过:

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到最后一个点的索引的不带扩展名(
    foo.bar
    part)的完整文件名,请执行以下操作
  • 从最后一个点索引获取扩展名(
    .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);