Saber se arquivo existe [RESOLVIDO]

1. Saber se arquivo existe [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

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.


  


2. MELHOR RESPOSTA

Uilian Ries
uilianries

(usa Linux Mint)

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]

Uilian Ries
uilianries

(usa Linux Mint)

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

John Schubert
darkboyjp

(usa Ubuntu)

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts