9

在应用程序的内部存储中重命名文件的最佳/最简单方法是什么?我觉得有点奇怪,有一个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 中没有错误或任何内容。

4

5 回答 5

7

不要使用原始File构造函数,而是getFileStreamPath使用Context. 也就是说,做:

File oldfile = ctx.getFileStreamPath("shoppinglists.tmp");
File newfile = ctx.getFileStreamPath("shoppinglists.csv");
oldfile.renameTo(newfile);
于 2012-11-26T13:38:20.810 回答
0

您需要使用renameTo()文件类的方法。

File testFile = new File ( "test.txt" ); // Assuming it is in Internal Storage
testFile.renameTo ( "newTest.txt" ); 
于 2012-08-29T15:34:48.423 回答
0

renameTO() 在我的环境中不起作用(Eclipse Indigo,带有 android 版本 2.3 的 AVD)。解决方案是全部跳过临时文件方法,因为在任何合理的时间范围内似乎都无法解决。

于 2012-08-31T09:17:27.710 回答
0

我认为我们不能在内部存储环境中使用 File.renameTo() 方法。在此环境中重命名文件,可以执行以下操作: - 将旧文件的内容复制到新文件。- 删除旧文件。

于 2014-01-24T02:53:30.833 回答
0
File file = new File("your old file/folder name");
File file2 = new File("your new file/folder name");
boolean success = file.renameTo(file2);
于 2016-02-18T16:18:39.610 回答