【发布时间】:2011-09-06 01:50:46
【问题描述】:
试图获取一个 mp3 文件并使用字符串变量重命名它。例如,我有一个古典音乐文件夹 C:/classical,我想要一首名为 vivaldi 的歌曲重命名为 FourSeasons。我想找到初始文件 C:/classical/vivaldi.mp3 的绝对路径,然后提供一个字符串“FourSeasons.mp3”,并将文件 C:/classical/vivaldi.mp3 更改为 C:/classical /FourSeasons.mp3.
我曾想过使用 renameTo 和文件写入器,但这些都没有给我想要的结果。 RenameTo 代码:这将返回 false(重命名失败),并且往往会永久删除我的文件。
public static void main(String[] args) {
File mp3 = new File("C:/mp3.mp3");
boolean renamestatus = mp3.renameTo(new File("song.mp3"));
System.out.println(renamestatus);
}
我还尝试使用 FileReader 和 FileWriter 制作文件的精确副本,并使用新名称。此方法输出一个 mp3 文件,该文件会跳过并且听起来与输入文件相差甚远 这是我的 fileWriter 代码:
File inputFile = new File("C:/mp3.mp3");
File outputFile = new File("C:/song.mp3");
FileReader in = new FileReader(inputFile);
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = in.read()) != -1)
out.write(c);
in.close();
out.close();
【问题讨论】:
-
能否重现
renameTo()删除文件的问题?您确定它不会将它移动到您不期望的地方吗?因为如果确实如此,那么这绝对是一个错误! -
它可以将它移动到系统文件夹或 $CLASSPATH 或 $PATH 上的某个位置,搜索它以确保它,因为 Joachim 说它不太可能被删除。
-
为什么要将文件移动到“系统文件夹或 $CLASSPATH 或 $PATH 上的某个位置”?文件路径是相对于当前工作目录的。
-
@Joachim:如果 renameTo 返回 false,它甚至不应该将文件移动到意外的地方。
-
@jarnbjo:这也是真的。那么你能可靠地复制它吗?如果是这样,那么您可能应该将此报告为错误。
标签: java file mp3 rename filewriter