Avisos

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

Respuesta
 
Herramientas
  #1  
Viejo 16/05/16, 18:45:33
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
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
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #3  
Viejo 16/05/16, 23:34:35
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
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
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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).
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #5  
Viejo 17/05/16, 10:00:25
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
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
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Ú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
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
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
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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]
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #9  
Viejo 17/05/16, 11:11:02
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
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
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #11  
Viejo 18/05/16, 10:44:33
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android

Herramientas


Hora actual: 11:14:32 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /