Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

scarenci

Listar Diretório, com tipo e tamanho no linux <dirent>???

Recommended Posts

Olá pessoal, Eu gostaria de saber se alguém sabe como fazer para encontrar o tipo e o tamanho do arquivo listado???Eu estou usando a biblioteca <dirent> para listar os nomes d_name, que é no linux alguém pode ajudar!!!!Agradeço desde já a ajuda!! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro scarenci,

 

De uma olhada nas funções stat() e lstat().

Segue um exemplo.

/* Retorna o tipo de um arquivo. */char TipoArquivo( const char* __arquivo ){	struct stat arq_info;	char retorno;	retorno = 0;	if( lstat( __arquivo, &arq_info ) != -1 )	{		if( S_ISLNK( arq_info.st_mode ) )			retorno = 'L';  /* Link */	}	if( retorno == 0 )	{		if( stat( __arquivo, &arq_info ) != -1 )		{			 if( S_ISREG( arq_info.st_mode ) )				 retorno = 'R';  /* Regular File */			 else if( S_ISDIR( arq_info.st_mode ) )				 retorno = 'D';  /* Directory */			 else if( S_ISCHR( arq_info.st_mode ) )				 retorno = 'C';  /* Character device */			 else if( S_ISBLK( arq_info.st_mode ) )				 retorno = 'B';  /* Block device */			 else if( S_ISFIFO( arq_info.st_mode ) )				 retorno = 'F';  /* FIFO File */			 else if( S_ISSOCK( arq_info.st_mode ) )				 retorno = 'S';  /* Socket file */		 }	 }	 return( retorno );}

Para obter o tamanho do arquivo basta ler o campo st_size da estrutura stat.

Espero que este exemplo o ajude.

 

Boa sorte.

elsd.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro scarenci,De uma olhada nas funções stat() e lstat().Segue um exemplo.

/* Retorna o tipo de um arquivo. */char TipoArquivo( const char* __arquivo ){	struct stat arq_info;	char retorno;	retorno = 0;	if( lstat( __arquivo, &arq_info ) != -1 )	{		if( S_ISLNK( arq_info.st_mode ) )			retorno = 'L';  /* Link */	}	if( retorno == 0 )	{		if( stat( __arquivo, &arq_info ) != -1 )		{			 if( S_ISREG( arq_info.st_mode ) )				 retorno = 'R';  /* Regular File */			 else if( S_ISDIR( arq_info.st_mode ) )				 retorno = 'D';  /* Directory */			 else if( S_ISCHR( arq_info.st_mode ) )				 retorno = 'C';  /* Character device */			 else if( S_ISBLK( arq_info.st_mode ) )				 retorno = 'B';  /* Block device */			 else if( S_ISFIFO( arq_info.st_mode ) )				 retorno = 'F';  /* FIFO File */			 else if( S_ISSOCK( arq_info.st_mode ) )				 retorno = 'S';  /* Socket file */		 }	 }	 return( retorno );}
Para obter o tamanho do arquivo basta ler o campo st_size da estrutura stat.Espero que este exemplo o ajude.Boa sorte.elsd.
Valeu, pela ajuda!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.