Rename a file in the internal storage

南楼画角 提交于 2019-12-08 16:33:27

问题


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


来源:https://stackoverflow.com/questions/12181372/rename-a-file-in-the-internal-storage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!