如何重命名现有文件?
我有2个文件, File src = new File("loc/xyz.mp3")
和File dst=new File("loc/xyz1.mp3")
现在,我想在删除src
文件时将dst
重命名为xyz.mp3。 我怎么能做到这一点? 我在努力,
src.delete(); dst.renameTo(src);
我在我的应用程序的后台运行AsyncTask,当我第一次执行它时,它运行得很好,但是第二次,它崩溃了。 请帮忙我该怎么做。
尝试做:
new File("loc/xyz1.mp3").renameTo(new File("loc/xyz.mp3"));
这应该会自动覆盖原始文件。 这个答案来自这里: 如何重命名现有文件
文件说:
重命名此抽象路径名表示的文件。
此方法行为的许多方面本质上都依赖于平台:重命名操作可能无法将文件从一个文件系统移动到另一个文件系统,它可能不是primefaces的,如果具有目标抽象路径名的文件,它可能不会成功已经存在。 应始终检查返回值以确保重命名操作成功。
在AsyncTask
,你不能保证src
和dst
,正如@Machinarius所说,检查src.exists() && dst.exists()
可能会避免你的错误。 使用deleteOnExit
也是一个很好的做法。
在第二次运行dst
文件系统中不存在时,应该将if (src.exists() && dst.exists())
检查到代码中以避免错误。
那两个delete()和renameTo()将返回true或false,具体取决于它的执行结果。 如果上一步成功并且文件实际存在于给定路径中,您可能需要添加条件检查。
您应该使用Files
重命名Files
,它比renameTo()
更可靠。
Path source = currentFile.toPath(); try { Files.move(source, source.resolveSibling(formattedName)); } catch (IOException e) { e.printStackTrace(); }
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#move(java.nio.file.Path,java.nio.file.Path,java.nio 。 file.CopyOption …)