Pular para o conteúdo

Saber se arquivo existe [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Saber se arquivo existe [RESOLVIDO]

Enviado em 24/08/2016 - 12:33h

Como eu posso saber se um arquivo já existe numa pasta?
Tipo, com um:
if (file_exist("arquivo.txt"))
cout<<"Arquivo existe\n";


Eu conheço a access() do unistd.h mas não é portável, queria algo multiplataforma, estou usando C++, mas não quero ter que usar a boost ou alguma lib pesadinha pra um programa tão simples que estou fazendo.
Os arquivos que preciso verificar se existem são todos menos de 1MB, são todos txt.

Responder tópico

2. Re: Saber se arquivo existe [RESOLVIDO]

Melhor resposta

Enviado em 24/08/2016 - 12:49h

Em C pode utilizar a função fopen:


FILE * fd = fopen("arquivo.txt", "r");


Utilizando linux system calls, pode usar access:


access("arquivo.txt", 0);
Em C++ pode usar fstream:


std::ifstream ifs("arquivo.txt");
if (ifs) { ... }
--
Uilian Ries
Linux Counter: 521986

3. Re: Saber se arquivo existe [RESOLVIDO]

Enviado em 24/08/2016 - 13:19h

A linguagem não tem suporte nativo pra um método "exists" .

O mais próximo de portável que eu uso é a biblioteca Boost:


#include <boost/filesystem.hpp>

if ( !boost::filesystem::exists( "arquivo.txt" ) ) { //Ops! }


O standard do C++17 irá integrar filesystem, mas compiladores mais novos (gcc-5.3.x clang-3.8) já possuem suporte experimental:



#include <experimental/filesystem>

int main() {
std::experimental::filesystem::exists("arquivo.txt");
}


g++ main.cpp -std=c++1z -lstdc++fs
--
Uilian Ries
Linux Counter: 521986

4. Resultado final

Enviado em 06/06/2017 - 16:26h

Boa tarde

e como ficaria essa verificação em c

FILE * fd = fopen("arquivo.txt", "r");

isso abaixo não compila ...

if(FILE *fd = fopen("arquivo.txt", "r"))
{
printf("\nTem arquivo");

} else
{
printf("\n não tem arquivo");
}


Grato

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder