在应用程序的内部存储中重命名文件的最佳/最简单方法是什么?我发现有一个Context.deleteFile()
方法,但没有“移动”或“重命名”功能,这有点奇怪。我是否必须一直保存文件内容,删除文件,创建新内容然后将内容复制到文件中?或者有没有办法在现有文件上复制文件?
更新(2012年8月30日):
根据下面建议的解决方案,我无法开展工作:
我试过了:
ctx.deleteFile("shoppinglists.csv"); <--- delete the old file
File oldfile = new File("shoppinglists.tmp");
File newfile = new File("shoppinglists.csv");
oldfile.renameTo(newfile);
然而,这不起作用。在deleteFile()之后,没有其他事情发生了,我留下了新的shoppinglists.tmp文件。
我错过了什么?
注意:LogCat中没有任何错误或任何错误。
答案 0 :(得分:5)
不使用原始File
构造函数,而是使用getFileStreamPath
提供的方法Context
。也就是说,做:
File oldfile = ctx.getFileStreamPath("shoppinglists.tmp");
File newfile = ctx.getFileStreamPath("shoppinglists.csv");
oldfile.renameTo(newfile);
答案 1 :(得分:0)
您需要使用文件类的renameTo()
方法。
File testFile = new File ( "test.txt" ); // Assuming it is in Internal Storage
testFile.renameTo ( "newTest.txt" );
答案 2 :(得分:0)
renameTO()在我的环境中不起作用(Eclipse Indigo,AVD with android version 2.3)。解决方案是跳过临时文件方法alltogeher,因为它似乎无法在任何合理的时间范围内解决。
答案 3 :(得分:0)
我认为我们不能在内部存储环境中使用File.renameTo()方法。 在此环境中重命名文件,可以执行以下操作: - 将旧文件的内容复制到新文件。 - 删除旧文件。
答案 4 :(得分:0)
File file = new File("your old file/folder name");
File file2 = new File("your new file/folder name");
boolean success = file.renameTo(file2);