scarenci 0 Denunciar post Postado Agosto 15, 2006 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
elsd 0 Denunciar post Postado Agosto 17, 2006 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
scarenci 0 Denunciar post Postado Agosto 22, 2006 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