Cómo cambiar el nombre de un archivo en sdcard con la aplicación de Android?
En mi aplicación de Android, quiero cambiar el nombre del nombre de archivo en tiempo de ejecución. ¿Cómo puedo hacerlo?
Este es mi código:
- Export sqlite en csv
- ¿Cómo puedo aprovechar el botón "Borrar caché" de Android
- Compartir archivos temporales entre aplicaciones sin tarjeta SD
- Imágenes con: nopm: in filename
- Cómo cargar la imagen en el servidor en Android?
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(); }
También utilicé el método renameTo (File f) pero no funciona.
- Sube video grande a un servidor PHP desde Android Crashes Application
- Android: android.content.res.Resources $ NotFoundException: Cadena de recursos ID # 0x5
- Cargando imágenes con Picasso desde el almacenamiento interno
- Android: Registro del filtro de intenciones para abrir adjuntos de correo electrónico con mi aplicación
- Obtener acceso al dispositivo de almacenamiento masivo USB en android
- ¿Cómo saber que este archivo se creó desde mi aplicación?
- Impedir que otras aplicaciones accedan a la imagen de mi aplicación almacenada en la tarjeta sd
- Detectar si el contacto tiene foto
Yo recomendaría usar File.renameTo()
lugar de ejecutar el comando mv
, ya que estoy bastante seguro de que este último no es compatible.
¿Ha dado permiso a su aplicación para escribir en la tarjeta SD ?
Para ello, añada lo siguiente a su AndroidManifest.xml
:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Si no funciona una vez que se ha añadido el permiso, compruebe si hay errores al intentar cambiar el nombre del archivo (ya sea mediante el comando adb
o en la vista de logcat en Eclipse).
Al acceder a la tarjeta SD no debe codificar la ruta sino que utiliza el método Environment.getExternalStorageDirectory()
para obtener el directorio.
El siguiente código funciona para mí:
File sdcard = Environment.getExternalStorageDirectory(); File from = new File(sdcard,"from.txt"); File to = new File(sdcard,"to.txt"); from.renameTo(to);
También puede dar explicitamente la ruta completa sin especificar el directorio …
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);
He intentado agregar permisos. Aunque no funcionó, añadiendo File1.setWritable(true);
Me permitió cambiar el nombre del archivo.
A continuación se muestra mi fragmento de código:
if(from.setWritable(true)) Log.d("InsertFragmentTwo ", "FileName==> Is Writable"); File two = new File(sdcard,""+imageCount+"."+s.substring((s.lastIndexOf(".")+1))); if (from.renameTo(two)) { Log.d("InsertFragmentTwo ", "New FileName==> " + temp); imageCount++; retrofitImageUpload(temp); } else Log.d("InsertFragmentTwo ", "File Renaming Failed");