readdir()해서 그 폴더안의 내용을 모두 출력할때요.
글쓴이: sojung22 / 작성시간: 토, 2004/09/18 - 3:01오후
int open_dir()
{
DIR *srcdir = opendir(docsrc);
struct dirent *pent;
//디렉토리 열기
while((pent = readdir(srcdir)) != NULL)
{
printf("%s\n", pent->d_name);
}
}
간단히 디렉토리를 열어서 그안의 파일명을 출력하면 되는데요.
파일들뿐 아니라, . 과 .. 도 같이 출력하더라구요.
readdir 사용시 위의 것들은 출력하지 않는 방법이 있나요?
strcmp를 써서 같을때는 출력안하도록 해보긴 했는데.
뭔가 좀더 멋진^^; 방법이 있을듯 해서요. 궁금합니다..
Forums:


Re: readdir()해서 그 폴더안의 내용을 모두 출력할때요.
int open_dir() { DIR *srcdir = opendir(docsrc); struct dirent *pent; //디렉토리 열기 while((pent = readdir(srcdir)) != NULL) { if(strcmp(pent->d_name, ".") == 0 || strcmp(pent->d_name, "..") == 0) continue; printf("%s\n", pent->d_name); } }이렇게 하면 되지 않을까요.
----
http://www.planetmono.org
다들 strcmp를 사용합니다. 8)
다들 strcmp를 사용합니다. 8)
Re: readdir()해서 그 폴더안의 내용을 모두 출력할때요.
strcmp가 보기 싫으시다면 glob를 사용해 보세요.
glob_t buf; glob("*", 0, NULL, &buf); int i = 0; for (i = 0; i < buf.gl_pathc; ++i) { printf("%s\n", buf.gl_pathv[i]); } globfree(&buf);흠. 별로 안멋지군요. -_-
모든 서브디렉토리를 무시하고 싶으시다면is_dir()을 쓰세요. ^^
모든 서브디렉토리를 무시하고 싶으시다면
is_dir()을 쓰세요. ^^
2006년 2월 21일.
[code:1]struct stat stat_p;err = lst
struct stat stat_p; err = lstat("파일명", &stat_p); if ( err == -1 ) { // lstat 에러 처리; } else { if ( S_ISREG(stat_p.st_mode) ) { // 레귤라 파일인 경우에 대해 처리 // 레귤라 파일..... } else { // S_ISREG() 만 있는것은 아니지!! 당근...! // 레귤라 파일 아님 } }별로 우아해 보이지 않지만, 필요시 이렇게도 코딩합니다.
레귤라 파일을 검토 하는 이유는 스페셜파일(소켓, 피포, 링크등등)에 대
레귤라 파일을 검토 하는 이유는 스페셜파일(소켓, 피포, 링크등등)에 대한 고려가 필요할 경우가 많기 때문입니다. 꼭 ".", ".."만 있는 것은 아니겠지요. 특히, 좀 더티한(?) 환경이라면 더욱 더 고려해야 합니다.
읽고자 하는
읽고자 하는 디렉토리 안에 파일이 아닌 디렉토리는 무시 하게 하려고 하는데 잘 안되네요.
처음엔 그냥 S_ISDIR()을 사용 해봤는데 서브디렉토리가 안걸러 지더군요.
if(S_ISDIR(statbuf.st_mode)) continue;그래서 S_ISREG()를 써서 아래처럼도 시도해봤지만 역시 파일이 아닌 디렉토리도 나왔습니다.
if(S_ISREG(statbuf.st_mode)) cout << dirent->d_name << " " << statbuf.st_size << endl;그리고 파일중에서 압축파일이나 동영상 파일, 이미지파일 같은건 파일크기 정보가 안나오던데
이런건 따로 처리를 해주어야 하는가요?
해당 부분의 코드를
해당 부분의 코드를 올려주세요.
아울러, 실행환경(운영체제 및 버전, 컴파일러 및 버전, 컴파일옵션에서 64비트 파일시스템을 위한 배려(?)를 했는가?등)에 대해 간략히 올려주십시요.
*참고:
32비트 운영체제이면서, 거대파일( 질문에서는 동영상, 이미지 파일등; 파일크기 > 2^31-1 Bytes)인 경우에는, 32비트를 위한 파일시스템호출을 하고 그냥 평범하게 컴파일해서 생기는 문제가 아닌가?라는 예측을 해봅니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
댓글 달기