![]() |
|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
Renombrar archivos
Vereis, tengo una carpeta donde hay varios archivos de audio en diferentes formatos, con el menu contextual se pueden renombrar, me lo renombra bien siempre que sean .3gp , pero los archivos con extension .aac, .m4a, .amr por ejemplo me los renombra a .3gp, ... hay manera de renombrar el archivo pero solo el texto? sin tocar la extension que tiene por defecto? , con un if else quizas?
Estas son las extensiones que tengo. Código:
private String extension = ".3gp"; private String extension2 = ".aac"; private String extension3 = ".m4a"; private String extension4 = ".amr"; |
|
#2
|
||||
|
||||
La extensión es parte del nombre del fichero, así que asegúrate de incluirla en el nuevo nombre correctamente.
El error lo tendrás en la línea que ponga renameTo, o en la línea donde construyas el File que representa el nuevo nombre. |
#3
|
||||
|
||||
Eso lo tengo correcto mocelet, lo que intento es renombrar pero sin tocar la extension del archivo, solo el string de antes de la extension.
|
#4
|
||||
|
||||
En los File no existe el concepto de extensión, el ".m4a" por ejemplo es parte del nombre y no se trata de forma separada. Si quieres que un fichero que se llamaba pepito.m4a pase a llamarse fulanito.m4a tienes que pasar como nuevo nombre del fichero "fulanito.m4a". El nombre que estás pasando ahora no es correcto por lo que cuentas.
Ahí ya es más un problema de tratamiento de String. Si quieres conservar lo que viene después del punto (la extensión para entendernos) en el fichero original, tendrás que extraerlo y asegurarte de añadirlo al nuevo nombre que quieres poner. Una forma sencilla es usar el lastIndexOf del String original para localizar el punto. Sabiendo dónde está el punto ya puedes usar el método substring para coger lo que viene antes (el nombre) y lo que viene después (la extensión). |
#5
|
||||
|
||||
Exacto, lo del "lastIndex" y "substring" eso es lo que intento hacer pero no me sale. Este es el codigo que uso por ejemplo para renombrar archivos .3gp, el cual no funciona si el archivo a renombrar no coincide con la extension .3gp, (si es .3gp va bien) si es "pepito.aac" y lo renombro a lo que sea me da como resultado "otropepito.3gp" por ejemplo.
[php] Path = Environment.getExternalStorageDirectory().getPath( )...etc; String value = input.getText().toString(); // edittext del cual cojo el nuevo nombre fileName = input.getText().toString() + extension; File file = new File(Path + archivo); // antiguo File file2 = new File(Path + value + extension); // nuevo if (file2.exists()) { try { throw new java.io.IOException("El nombre ya existe!"); } catch (IOException e) { e.printStackTrace(); } } boolean success = file.renameTo(file2); if (!success) { System.out.println("No se puede renombrar el archivo!"); } else { System.out.println("Archivo renombrado correctamente!"); } Toast.makeText(Actividad1.this, "Renombrado correctamente" + "\n" + value + extension, Toast.LENGTH_SHORT).show(); [/php] |
#6
|
||||
|
||||
Y la parte interesante no la pones jeje
![]() Aaaah, que es la variable del primer mensaje, entonces normal que todos los ficheros se renombren a 3gp si a todos les pones esa extensión Última edición por mocelet Día 17/05/16 a las 10:20:00 |
#7
|
||||
|
||||
Exacto, solo me falta incluir el "lastintex" o "substring" para poder detectar la extension del archivo a renombrar
![]() |
#8
|
||||
|
||||
Ahí te va un código más o menos, no lo he compilado ni nada, pero el concepto es ese:
[PHP]String original = file.getName(); int n = original.lastIndexOf('.'); String extension = n > 0 ? original.substring(n) : ""; [/PHP] |
#9
|
||||
|
||||
Gracias mocelet
![]() [php] String archivo...etc int dot = archivo.lastIndexOf("."); String ext = archivo.substring(dot + 1); String extens = "." + ext; [/php] |
#10
|
||||
|
||||
No hay de qué, aunque tu código no funcionaría bien en caso de que el fichero no tenga extensión. Y tampoco tiene mucho sentido saltarse el punto con el +1 para luego volver a añadirlo.
|
#11
|
||||
|
||||
Bueno si, no tiene logica lo del punto
![]() ![]() |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 02:49:09 (GMT +2)
HTCMania: líderes desde el 2007