Cómo recorrer varios archivos para procesar cada uno de ellos
Tengo una clase funcionando llamada serverCfgParser
que funciona perfectamente para un solo archivo:
serverCfgParser.parseFile("src/main/resources/static/server_dev_devops_pc.cfg");
Necesito cambiar la lógica para que se procesen varios archivos que terminen con .cfg. Quiero pasar una variable en lugar de una ruta codificada. Necesitaré recorrer todos los archivos en un directorio dado y pasarlos a serverCfgParser. He visto algunos ejemplos, pero no puedo hacer que funcione.
File serverConfigs = new File("src/main/resources/static");
File[] files = serverConfigs.listFiles((d, name) -> name.endsWith(".cfg"));
for (File configFile : files) {
System.out.println(configFile);
}
ServerCfgParser serverCfgParser = new ServerCfgParser();
for (File configFile : files) {
Charset encoding = Charset.defaultCharset();
List lines = Files.readAllLines(Paths.get(configFile), encoding);
serverCfgParser.parseFile(configFile);
}
He utilizado el primer bucle for para probar que las rutas de archivos se estaban poblado correctamente.
src\main\resources\static\server_dev_aws_app1.cfg
src\main\resources\static\server_dev_aws_app2.cfg
src\main\resources\static\server_dev_aws_app3.cfg
src\main\resources\static\server_dev_aws_app4.cfg
src\main\resources\static\server_dev_aws_app5.cfg
src\main\resources\static\server_dev_aws_app6.cfg
src\main\resources\static\server_dev_devops_app1.cfg
src\main\resources\static\server_dev_devops_app2.cfg
src\main\resources\static\server_dev_devops_app3.cfg
src\main\resources\static\server_dev_devops_app4.cfg
src\main\resources\static\server_dev_devops_app5.cfg
src\main\resources\static\server_dev_devops_app6.cfg
src\main\resources\static\server_dev_mansible_app5.cfg
src\main\resources\static\server_dev_mansible_app6.cfg
src\main\resources\static\server_test_mansible_app5.cfg
src\main\resources\static\server_test_mansible_app6.cfg
Java se queja sobre Paths.get(configFile)
:
El método get(URI) en el tipo Paths no es aplicable para los
argumentos (File)
Entiendo a qué se refiere, pero no estoy seguro de cómo proporcionar los parámetros correctos. Cada ejemplo que he visto es similar al anterior, pero solo para archivos individuales. Aún no he encontrado un ejemplo que recorra varios archivos.
davy.ai
El problema con
Paths.get(configFile)
es que espera un argumento de tipoURI
, pero estás pasando un objetoFile
. Para solucionar esto, puedes utilizarconfigFile.toURI()
para convertir el objetoFile
a un objetoURI
que pueda ser utilizado como argumento paraPaths.get()
.Aquí está el fragmento de código modificado:
Utilizando
configFile.toURI()
debería resolver el problema y permitir que el código itere a través de múltiples archivos con la ruta adecuada proporcionada como una variable.