Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Leer todos los archivos .txt de un directorio

Estas en el tema de Leer todos los archivos .txt de un directorio en el foro de C/C++ en Foros del Web. Hola amigos, tengo que leer un montón de .txt dentro de una carpeta (contienen números que debo sumar) el lío es que los nombres de ...
  #1 (permalink)  
Antiguo 31/01/2016, 14:55
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 10 años, 4 meses
Puntos: 1
Leer todos los archivos .txt de un directorio

Hola amigos, tengo que leer un montón de .txt dentro de una carpeta (contienen números que debo sumar) el lío es que los nombres de los archivos no tiene un patrón para leerlos uno a uno tipo "archivo1.txt, archivo2.txt...".

Mi pregunta es si se puede decirle a c++ que lea un archivo y luego siga con el siguiente que encuentre de la misma extensión, yo para leer archivos uso la librería y objetos de la <fstream>. Se puede hacer ésto? o debo cambiar manualmente el nombre de todos esos archivos?

saludo,
  #2 (permalink)  
Antiguo 31/01/2016, 15:07
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 9 meses
Puntos: 27
Respuesta: Leer todos los archivos .txt de un directorio

C++ no incorpora en la actualidad ningún mecanismo que te ofrezca un control sobre el sistema de archivos que te permita hacer lo que necesitas. Lo más simple que puedes hacer, como ya te has percatado, es que todos los archivos sigan un patrón y cuando el patrón de lugar a que el archivo no se abra, podrás asegurar que has completado la suma.

Si realmente los nombres no pueden seguir un patrón con el que identificarlos deberás trabajar con la API del Sistema Operativo en cuestión que estés utilizando o mediante alguna librería que se encargue del problema como Boost (filesystem)
  #3 (permalink)  
Antiguo 31/01/2016, 15:28
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Leer todos los archivos .txt de un directorio

Hola gracias por tu respuesta, trabajo en windows así que será mejor intentar con la librería que me comentas. Lamentablemente los archivos no siguen un patrón, y son más de 1.500 por lo que cambiarlos a mano es una tarea titanica. Manejar la API de windows para esto es fácil?

saludos
  #4 (permalink)  
Antiguo 31/01/2016, 15:32
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Leer todos los archivos .txt de un directorio

Puedes obtener la lista de archivos de un directorio. Para ello dispones de la función readdir, ubicada en la librería dirent.h. A esa lista le deberías aplicar el filtrado correspondiente para quedarte únicamente con los ficheros a abrir... Después es cuestión de iterar sobre la lista y procesar cada fichero según te interese.

Por cierto, esta es la solución POSIX, disponible para Linux. En windows se hace de forma diferente pero el concepto es el mismo.

Edito: para windows mira FindFirstFile y FindNextFile

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Última edición por eferion; 31/01/2016 a las 15:38
  #5 (permalink)  
Antiguo 31/01/2016, 15:38
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Leer todos los archivos .txt de un directorio

Cita:
Iniciado por eferion Ver Mensaje
Puedes obtener la lista de archivos de un directorio. Para ello dispones de la función readdir, ubicada en la librería dirent.h. A esa lista le deberías aplicar el filtrado correspondiente para quedarte únicamente con los ficheros a abrir... Después es cuestión de iterar sobre la lista y procesar cada fichero según te interese.

Por cierto, esta es la solución POSIX, disponible para Linux. En windows se hace de forma diferente pero el concepto es el mismo.

Un saludo.
Gracias por tu respuesta, según recuerdo la librería "dirent.h" es para linux como tu me mencionas, sabes de alguna en windows con alguna función similar a la de "readdir" que esté incluida en c++? O también me recomiendas c++ boost.

Saludos,

Última edición por dmorill; 31/01/2016 a las 15:43 Razón: Ortografía
  #6 (permalink)  
Antiguo 31/01/2016, 15:45
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Leer todos los archivos .txt de un directorio

Gracias, no había leído la última modificación de tu comentario.
  #7 (permalink)  
Antiguo 31/01/2016, 15:50
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 9 meses
Puntos: 27
Respuesta: Leer todos los archivos .txt de un directorio

Para Windows necesitarás las funciones FindFirstFile y FindNextFile probablemente. Aquí tienes sus referencias y si tienes dudas pregunta:

FindFirstFile

FindNextFile

Fíjate bien en los ejemplos y suerte.

Edit: Lo que te había dicho eferion, yo tampoco lo había visto hasta ahora

Etiquetas: fstream, lote
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:05.