Segue o código em c++ (windows) testado em DevC++ que lista o conteúdo de um diretório (pasta), distinguindo se trata-se de um arquivo ou subpasta (subdiretório):
// By Prof. Alan Mendes Marotta
#include ( dir.h ) // classe para manipular diretórios
#include ( dirent.h ) // classe para manipular diretórios
#include ( cstdio )
#include ( cstdlib )
#include ( iostream )
#include ( string.h )
#include ( fstream )
#include ( iostream )
#include ( string.h )
#include ( stdlib.h )
#include ( stdio.h )
#include ( sstream )
using namespace std;
char novapasta[200];
void listadir (const char *path)
{
// ponteiro para entrada do arquivo na pasta
struct dirent *pent = NULL;
// Ponteiros para os diretórios:
// a ser listado e para o teste dos subdiretórios
DIR *pdir = NULL, *pdirteste = NULL;
// Tentando inicializar o ponteiro para o diretório
pdir = opendir (path);
// caso o pdir não seja inicializado corretamente, sai
if (pdir == NULL)
{ // imprimi uma mensagem de erro
printf ("\nERRO! Não foi possível abrir a pasta.");
return; // termina a função listadir
}
while (pent = readdir (pdir))
// enquanto houver um diretorio ou arquivo para listar
{
if (pent == NULL)
// se o pent (ponteiro entrada) não retornar nada
{ // imprimi mensagem de erro e sai da função
printf ("\nERRO na inicialização do arquivo!");
return; // termina a função
}
// Imprimi o arquivo ou subpasta encontrado
printf ("%s\n", pent->d_name);
strcpy(novapasta,path);
strcat(novapasta,"\\");
strcat(novapasta,pent->d_name);
pdirteste = opendir( novodir );
// Testa se o subdiretório foi aberto
if (pdirteste == NULL) // não é um subdiretório
{
printf("Arquivo\n");
} else
{
printf("Pasta \n")
closedir( pdirteste );
// desalocando o ponteiro pois abriu a pasta
}
}
// Encerra o ponteiro para o diretório
closedir (pdir);
}
int main ()
{
listadir ("C:\\testec\\");
system("PAUSE");
return 0;
}
Assinar:
Postar comentários (Atom)
Prof. Alan, o sr. sabe como posso acessar os atributos de arquivos? como data de criacao, autor...
ResponderExcluirAqui deu certo... só tive que alterar nas #includes... tipo : #include ( dir.h ) para #include
ResponderExcluir