用不同扩展名的文件中的字符串重命名文件
我需要重命名一个名称为.txt
文件的.afp
文件。我试图让这件事情起作用,没有任何帮助,我偶然发现了许多“解决方案”。用不同扩展名的文件中的字符串重命名文件
假设我在C:/test/a/Mytes t.txt
中有一个txt文件,并且我想要将.afp
文件重命名为C:/files/b/Testf ile.afp
。这正是我想要做的(根据在这个网站上找到的解决方案),它不起作用。我切.txt
文件的扩展名并获得唯一的文件名:
String fileNameNoExt=fileName.substring(0, fileName.lastIndexOf('.'));
//fileName is .txt file name
File file = new File(afpSRC, afpName);
file.renameTo(new File(afpSRC, fileNameNoExt + ".afp"));
afpSRC
包含路径到文件夹中.afp
文件所在和afpName
是文件的名称。
谁能告诉我为什么这不起作用和.afp
文件名保持不变?
可能是因为File file = new File(afpSRC, afpName);
没有引用现有文件。
我怀疑afpSRC
不是父路径或afpName
不是文件名。或两者 ?
要进行调试,应该先检查文件是否存在。
如果不存在,则抛出异常。
除了任何方式(调试和最终代码),您应该检查返回的值renameTo()
并处理它。
这里是一个示例代码:
String fileNameNoExt=fileName.substring(0, fileName.lastIndexOf('.'));
//fileName is .txt file name
File file = new File(afpSRC, afpName);
if (!file.exists()){
throw new RuntimeException("file not found = " + file);
}
boolean isRenamed = file.renameTo(new File(afpSRC, fileNameNoExt + ".afp"));
System.out.println("isRenamed = " + isRenamed);
if (!isRenamed){
// handle the problem
}
非常感谢,我意识到我复制.pdf版本的文件,而不是.afp在dst文件夹中,这是抛出错误,我只是在我试图检查文件是否存在后才得到它。由于这个愚蠢的错误而丢失了2个小时.. –
不客气:)愚蠢的错误经常被评估:) – davidxxx
如果您使用Java NIO的设施,你将能够通过一个例外解释为什么重命名无法获取信息。
Files.move(Path from, Path to, CopyOption... options) throws IOException
String fileNameNoExt=fileName.substring(0, fileName.lastIndexOf('.'));
Path afpPathName = Paths.get(afpSRC, afpName);
Path newPathName = Paths.get(afpSRC, fileNameNoExt + ".afp");
Files.move(afpPathName, newPathName);
Paths.get在它的每个参数之间放置一个目录分隔符。第三行代码应该是'Paths.get(afpSRC,fileNameNoExt +“.afp”)'......除非你真的想创建一个基本名称只是“.afp”的文件。 – VGR
@VGR哎呀!接得好。固定。 –
是什么在'fileName'?它只需要文件名而不是完整的路径就可以工作。 – jingx
我后来添加了评论,你可能没有看到,对不起。 fileName只是txt文件名。不是绝对路径 –