在内部存储重命名文件(Rename a file in the internal storage)

2019-09-21 22:04发布

什么是重命名应用程序的内部存储上的文件的最好/最简单的方法是什么? 我觉得有点怪,有一个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中。

Answer 1:

而不是使用原始的File构造,使用方法getFileStreamPath通过所提供的Context 。 也就是说,这样做:

File oldfile = ctx.getFileStreamPath("shoppinglists.tmp");
File newfile = ctx.getFileStreamPath("shoppinglists.csv");
oldfile.renameTo(newfile);


Answer 2:

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

File testFile = new File ( "test.txt" ); // Assuming it is in Internal Storage
testFile.renameTo ( "newTest.txt" ); 


Answer 3:

renameTO()没有在我的环境(Eclipse的靛蓝,采用Android 2.3版本的AVD)工作。 解决的办法是跳过临时文件方法alltogeher,因为它似乎不能够在任何合理的时间框架来解决。



Answer 4:

我认为,我们不能在内部存储环境中使用File.renameTo()方法。 在这种环境下重命名文件,可以这样做: - 旧的文件,以新文件的复制内容。 - 删除旧文件。



Answer 5:

File file = new File("your old file/folder name");
File file2 = new File("your new file/folder name");
boolean success = file.renameTo(file2);


文章来源: Rename a file in the internal storage