Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to rename a file on sdcard with Android application?

In my Android application, I want to rename the file name at runtime. How can I do it?

This is my code:

String[] command = {" mv", "sun moon.jpg"," sun_moon,jpg"};
try
{
    Process process = Runtime.getRuntime().exec(command);
} 
catch (IOException e)
{
    Toast.makeText(this, ""+e, Toast.LENGTH_LONG).show();
}

I also used renameTo(File f) method but it does not work.

like image 869
Addy Avatar asked May 24 '10 11:05

Addy


People also ask

How do I rename a file programmatically?

File from = new File(directory, "currentFileName"); For safety, Use the File. renameTo() .

Can you rename a file in Android Studio?

Open the settings. gradle file with a text editor, like VSCode, and change the rootProject.name to your new project name. Done!


2 Answers

I would recommend using File.renameTo() rather than running the mv command, since I'm fairly sure the latter isn't supported..

Have you given your application permission to write to the SD Card?

You do this by adding the following to your AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

If it doesn't work once the permission is added check the device log for errors when you try to rename the file (either using the adb command or in the logcat view in Eclipse).

When accessing the SD Card you shouldn't hard-code the path but instead use the Environment.getExternalStorageDirectory() method to get the directory.

The following code works for me:

File sdcard = Environment.getExternalStorageDirectory();
File from = new File(sdcard,"from.txt");
File to = new File(sdcard,"to.txt");
from.renameTo(to);

and if you want to check the process, you can do like:

boolean renamed = from.renameTo(to);

if (renamed) {
  Log.d("LOG","File renamed...");
}else {
  Log.d("LOG","File not renamed...");
}
like image 162
Dave Webb Avatar answered Oct 10 '22 12:10

Dave Webb


you can also explicitly give the full path without specifying directory...

File file = new File("Path of file which you want to rename");
File file2 = new File("new name for the file");
    boolean success = file.renameTo(file2);
like image 26
Zar E Ahmer Avatar answered Oct 10 '22 13:10

Zar E Ahmer