Duda con Archivos en C++

Iniciado por k3r00t, 29 Julio 2012, 01:18 AM

0 Miembros y 2 Visitantes están viendo este tema.

k3r00t

Buenas, alguno sabe que sentencia puedo usar en C++ para verificar si cierto archivo existe y dependiendo de la respuesta hacer cierta accion? Basicamente lo que necesito es:

Si(Archivo_Existe_en_la_ruta)
 hago_algo()
sino
 hago_otra_cosa()

He leido en varios sitios pero ninguno resuelve mi duda, de antemano gracias.

PD: No me refiero a si el archivo pudo ser abierto con exito o no, sino que si existe o no, gracias!!

Queta

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

rir3760

Cita de: k3r00t en 29 Julio 2012, 01:18 AMNo me refiero a si el archivo pudo ser abierto con exito o no, sino que si existe o no,
Utilizando solo la biblioteca estándar de C o C++ no es posible realizar la operación que mencionas, debes utilizar el API de tu sistema operativo.


Cita de: Queta en 29 Julio 2012, 01:43 AM
Puedes usar fopen perfectamente.
No es correcto utilizar "fopen" porque:

A) Si esta tiene éxito el archivo existe, OK.
B) Si no tiene éxito no se puede asumir lo contrario (el archivo no existe) ya que la función puede fallar por otras razones (falla del dispositivo, falta de privilegios, etc.).

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

ecfisa

#3
Hola k3r00t.

Si estas utilizando windows podes utilizar la función API FindFirstFile , por ejemplo:

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <windows.h>

bool FileExists(const TCHAR *aName);

int main() {
 if (FileExists("C:\\ARCHIVO.TXT"))
   printf("Existe, hacer algo");
 else
   printf("No existe, hacer otra cosa");
 return 0;
}

bool FileExists(const TCHAR *aName) {
 WIN32_FIND_DATA lpFindFileData;

 if (FindFirstFile(aName, &lpFindFileData ) == INVALID_HANDLE_VALUE)
   return false;
 return true;
}


Saludos.