Rename a file in the internal storage

2019-06-16 19:23发布

问题:

What's the best/easiest way to rename a file in the application's internal storage? I find it a bit strange that there is a Context.deleteFile() method, but no "move" or "rename" function. Do I have to go all the way through saving the file's contents, deleting it, creating a new one and then copying the contents into that one? Or is there a way to copy a file over an existing file?

Update (Aug. 30, 2012):

As per the suggested solution below, which I cannot get to work:

  • I have a file called shoppinglists.csv
  • Then I create a new file called shoppinglists.tmp, and copy the contents from shoppinglists.csv AND some new entries into that. The shoppinglist.tmp file is then a new version of the shoppinglists.csv file
  • Then I delete the old shoppinglists.csv file
  • Then I need to rename the shoppinglists.tmp file to shoppinglists.csv

I tried this:

ctx.deleteFile("shoppinglists.csv");           <--- delete the old file
File oldfile = new File("shoppinglists.tmp");
File newfile = new File("shoppinglists.csv");
oldfile.renameTo(newfile);

However, this doesn't work. After deleteFile(), nothing more happens, and I'm left with the new shoppinglists.tmp file.

What am I missing?

NB: There are no errors or anything in LogCat.

回答1:

Instead of using a raw File constructor, use the method getFileStreamPath provided by the Context. That is to say, do:

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


回答2:

You need to use renameTo() method of File Class.

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


回答3:

renameTO() doesn't work in my environment (Eclipse Indigo, AVD with android version 2.3). The solution is to skip the temporary file method alltogeher, since it doesn't seem to be possible to solve in any reasonable time frame.



回答4:

I think we cannot use File.renameTo() method in Internal Storage environment. Renaming a file in this environment, can do: - Copy content of the old file to new file. - Delete old file.



回答5:

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