Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Puchu

#1
Java / Error renombrar archivos
24 Enero 2019, 16:51 PM
Buenas tardes,

He creado un código con Java para renombrar archivos .wav que tienen nombre tipo "03010101.wav" a "001.wav". Quiero que los coja uno a uno y los renombre con un contador desde el 001, 002, 003, hasta el último archivo que encuentre.

La cosa es que haciendo un .batch y el comando RENAME, te lo hace. Pero parece ser que con Java no es tan fácil. No entiendo por qué, los archivos salen dañados al pasarles el programa.

La idea del programa es que lo pones en la raíz donde tienes los archivos de muchos idiomas, va accediendo a las carpetas y renombrando los archivos.

Os paso el código a ver si es algún fallo mío de concepto, quizás me falta algo o lo que sea.

Mil gracias de antemano.

package renombrararchivos.v2;

import java.io.File;
import java.util.*;

public class RenombrarArchivosV2 {
   public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in); 
       
        File DirectorioActual = new File(".");//File para encontrar el directorio del programa
        String DireccionDirectorioActual = DirectorioActual.getPath();//Direccion del directorio donde está el programa
        File Raiz = new File(DireccionDirectorioActual);//File que apunta al directorio donde está el programa
        File CarpetaRaiz[] = Raiz.listFiles();//Lista las carpetas de todos los idiomas
       
        for(int NumeroIdiomas = 0;NumeroIdiomas < CarpetaRaiz.length;NumeroIdiomas++)//FOR para recorrer la carpeta RAIZ
        {
            int RenombradoNumero = 1;//Variable que va a dar nombre a los archivos
            String DireccionCarpetasIdiomas = CarpetaRaiz[NumeroIdiomas].getPath();//Direccion de la carpeta de idioma que se está renombrando
            File CarpetasIdiomas = new File(DireccionCarpetasIdiomas);//File que apunta al a carpeta de idioma que se está renombrando
            File ArchivosCarpetaIdiomas[] = CarpetasIdiomas.listFiles();//Lista todos los archivos dentro de la carpeta del idioma actual
            for(int NumeroArchivos = 0;NumeroArchivos < ArchivosCarpetaIdiomas.length;NumeroArchivos++)//FOR para realizar los cambios de nombre
            {
                String DireccionNombresArchivosAntiguos = ArchivosCarpetaIdiomas[NumeroArchivos].getPath();//Dirección (nombre) del archivo antiguo
                File ArchivoAntiguo = new File(DireccionNombresArchivosAntiguos);//File que almacena el nombre antiguo
                String RenombradoCadena = String.format("%03d",RenombradoNumero);//Cambio el formato del contador a String y con 3 dígitos.
                File NuevoArchivo = new File(CarpetasIdiomas+"\\"+RenombradoCadena+".wav");//Creo el File del nuevo archivo
                ArchivoAntiguo.renameTo(NuevoArchivo);//Para acabar renombrandolos aquí
                RenombradoNumero++;//Sumo al contador para que el nombre cambie
            }
        }
    }
}
#2
Buenos días,

soy nuevo en el foro pero llevo más de 10 años visitándolo para mis dudas. Nunca antes he tenido que escribir para mis dudas, pero la verdad, no encuentro solución a mi pequeño problema.

Sé que la duda igual es muy sencilla para vosotros, pero estoy empezando en MS-DOS y no acabo de encontrar una solución :-\. Conozco el comando rename, pero no me funciona en el caso que necesito.

Tengo este texto en un archivo .inf

07 (Este número me indica cuántas líneas hay en cada .inf)
100101 Bienvenida (40)* (Estas líneas son las que quiero modificar)
000102 Normas (08)*
100103 Plaza (15)*
000104 Iglesia (57)
100105 Av.España (25)*
000106 Correos (12)
000107 Final del dia (05)

Tengo una tarea repetitiva con más de 20 archivos .inf, con textos con este formato y lo único que le debo cambiar es:

A las líneas que empiecen con 1, cambiarlos por un 0. En los 20 .inf que tengo, quiero acceder, ver si empiezan con un 1 y cambiarlo por un 0.

¿Una ayudita, por favor?

¡Mil gracias!