重命名内部存储中的文件

时间:2012-08-29 15:25:51

标签: android android-context file-rename

在应用程序的内部存储中重命名文件的最佳/最简单方法是什么?我发现有一个Context.deleteFile()方法,但没有“移动”或“重命名”功能,这有点奇怪。我是否必须一直保存文件内容,删除文件,创建新内容然后将内容复制到文件中?或者有没有办法在现有文件上复制文件?

更新(2012年8月30日):

根据下面建议的解决方案,我无法开展工作:

  • 我有一个名为shoppinglists.csv
  • 的文件
  • 然后我创建了一个名为shoppinglists.tmp的新文件,并将shoppinglists.csv中的内容和一些新条目复制到该文件中。 shoppinglist.tmp文件是shoppinglists.csv文件的新版本
  • 然后我删除旧的shoppinglists.csv文件
  • 然后我需要将shoppinglists.tmp文件重命名为shoppinglists.csv

我试过了:

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中没有任何错误或任何错误。

5 个答案:

答案 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);