Java 如何重命名现有文件?
我有两个文件,Java 如何重命名现有文件?,java,android,file,Java,Android,File,我有两个文件,文件src=new文件(“loc/xyz.mp3”)和文件dst=new文件(“loc/xyz1.mp3”) 现在,我想将dst重命名为xyz.mp3,同时删除src文件。我怎样才能做到这一点? 我试着 src.delete(); dst.renameTo(src); 我在我的应用程序的后台运行AsyncTask,当我第一次执行它时,它工作得很好,但是第二次,它崩溃了。请帮助我如何执行此操作。在第二次运行时,文件系统中不存在dst,如果(src.exists()&&dst.exi
文件src=new文件(“loc/xyz.mp3”)
和文件dst=new文件(“loc/xyz1.mp3”)
现在,我想将dst
重命名为xyz.mp3,同时删除src
文件。我怎样才能做到这一点?
我试着
src.delete();
dst.renameTo(src);
我在我的应用程序的后台运行AsyncTask,当我第一次执行它时,它工作得很好,但是第二次,它崩溃了。请帮助我如何执行此操作。在第二次运行时,文件系统中不存在
dst
,如果(src.exists()&&dst.exists())检查代码以避免错误。这两个delete()和renameTo()将根据执行结果返回true或false。您可能需要添加条件检查,以确定上一步是否成功,并且文件是否实际存在于给定路径中。尝试执行以下操作:
new File("loc/xyz1.mp3").renameTo(new File("loc/xyz.mp3"));
这将自动覆盖原始文件。这个答案取自这里:您应该使用
文件重命名文件,它比重命名到()
可靠得多
,java.nio.file.Path,java.nio.file.CopyOption…文档说:
重命名由此抽象路径名表示的文件。
此方法行为的许多方面都是固有的
平台相关:重命名操作可能无法移动
从一个文件系统到另一个文件系统,它可能不是原子的,而且
如果文件的目标抽象路径名为
已经存在。应始终检查返回值以确保
重命名操作已成功
在AsyncTask
中,您不能保证src
和dst
,正如@Machinarius所说,检查src.exists()&dst.exists()
可能会避免您的错误。使用deleteOnExit
也是一种很好的做法。当logcat崩溃时,请共享您的logcat跟踪消息。renameTo()是否返回false或引发异常?好吧,现在它不会崩溃,实际上它现在只删除第一个文件。这样做既快又短!
Path source = currentFile.toPath();
try {
Files.move(source, source.resolveSibling(formattedName));
} catch (IOException e) {
e.printStackTrace();
}