Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 16/05/16, 18:45:33
Avatar de kaiser75
kaiser75 kaiser75 no está en línea
Miembro del foro
Mensajes: 493
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Mencionado: 3 comentarios
Tagged: 0 hilos
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";
Responder Con Cita


  #2  
Viejo 16/05/16, 19:06:00
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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.
Responder Con Cita
  #3  
Viejo 16/05/16, 23:34:35
Avatar de kaiser75
kaiser75 kaiser75 no está en línea
Miembro del foro
Mensajes: 493
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Mencionado: 3 comentarios
Tagged: 0 hilos
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.
Responder Con Cita
  #4  
Viejo 17/05/16, 00:33:17
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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).
Responder Con Cita
  #5  
Viejo 17/05/16, 10:00:25
Avatar de kaiser75
kaiser75 kaiser75 no está en línea
Miembro del foro
Mensajes: 493
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Mencionado: 3 comentarios
Tagged: 0 hilos
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]
Responder Con Cita
  #6  
Viejo 17/05/16, 10:14:04
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Y la parte interesante no la pones jeje ¿Dónde determinas el valor de extension?

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
Responder Con Cita
  #7  
Viejo 17/05/16, 10:18:27
Avatar de kaiser75
kaiser75 kaiser75 no está en línea
Miembro del foro
Mensajes: 493
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Mencionado: 3 comentarios
Tagged: 0 hilos
Exacto, solo me falta incluir el "lastintex" o "substring" para poder detectar la extension del archivo a renombrar
Responder Con Cita
  #8  
Viejo 17/05/16, 10:20:02
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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]
Responder Con Cita
  #9  
Viejo 17/05/16, 11:11:02
Avatar de kaiser75
kaiser75 kaiser75 no está en línea
Miembro del foro
Mensajes: 493
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Mencionado: 3 comentarios
Tagged: 0 hilos
Gracias mocelet te me has adelantado jajaja, al final lo he conseguido mas o menos como decias, asi es como me ha funcionado, ahora me detecta la extension del archivo a renombrar correctamente.

[php]
String archivo...etc
int dot = archivo.lastIndexOf(".");
String ext = archivo.substring(dot + 1);
String extens = "." + ext;
[/php]
Responder Con Cita
  #10  
Viejo 17/05/16, 11:40:01
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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.
Responder Con Cita
  #11  
Viejo 18/05/16, 10:44:33
Avatar de kaiser75
kaiser75 kaiser75 no está en línea
Miembro del foro
Mensajes: 493
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Mencionado: 3 comentarios
Tagged: 0 hilos
Bueno si, no tiene logica lo del punto , lo de si el archivo no tiene extension no funciona es irrelevante, ya que la app nunca tendra archivos sin extension, de todos modos es bueno saberlo
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 02:49:09 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007