현재 라이브러리의 내용을 readdir
(으)로 읽지 만 파일이 아닌 디렉토리 만 처리하고 싶습니다. 파일이 아니라 디렉터리를 가리키고 있다는 것을 어떻게 알 수 있습니까? C/C++에서 readdir 디렉토리를 무시하는 방법은 무엇입니까?
1
A
답변
1
당신은 lstat를 사용하여 감사 및 매크로 S_ISDIR.
예. 오류 검사없이 :
struct stat buffer;
int status;
char path[PATH_MAX];
DIR *dir = opendir(dir_name);
...
struct dirent *de = readdir(dir);
sprintf(path, "%s/%s", dir_name, de->d_name);
status = lstat(path, &buffer);
if(S_ISDIR(buffer.st_mode))
{
...
}
편집 : lstat 경로 (el.pescado)의 디렉토리를 포함하도록 수정되었습니다. R Samuel Klatchko가 지적한 바와 같이, 유형이 올라올 때 블랙리스트 대신 화이트리스트 접근 (S_ISREG)을 원할 수 있습니다.
0
`void DirectryNFileCount(const char * FileDir)
{
DIR *dir;
int filecount;
int dircount;
struct dirent *direntry;
if ((dir = opendir (FileDir)) == NULL)
{
/*Error code*/
}
while((direntry = readdir (dir)) != NULL)
{
if(direntry->d_type==DT_DIR)
dircount++;
/*do something with directries */
}
else
{
filecount++;
std::cout<<"Files Names"<<direntry->d_name<<std::endl;
}
}
std::cout<<"THIS Directory has "<<filecount<<" FILES and "<<dircount<< " DIRECTORIES";
}
+1
코드에 수반되는 서면 설명이 도움이 될 것입니다. – nbryans
관련 문제
- 1. htpasswd의 일부 디렉토리를 무시하는 방법은 무엇입니까?
- 2. CakePHP에서 공용 이미지 디렉토리를 무시하는 방법은 무엇입니까?
- 3. 배치 파일 : * .svn 디렉토리를 무시하는 방법
- 4. 디렉토리에 공백이있는 디렉토리를 무시하는 루프가 필요합니까?
- 5. 디렉토리를 패치하는 방법은 무엇입니까?
- 6. 'aspxerrorpath'변수를 전환/무시하는 방법은 무엇입니까?
- 7. System.Web.Script.javascriptSerializer에서 속성을 무시하는 방법은 무엇입니까?
- 8. 저장소에있는 파일을 무시하는 방법은 무엇입니까?
- 9. readdir/inotify를 사용하여이 경쟁 조건을 피하는 방법은 무엇입니까?
- 10. eiffel에서 디렉토리를 트래버스하는 방법은 무엇입니까?
- 11. 캐시 디렉토리를 테스트하는 방법은 무엇입니까?
- 12. Win32에서 디렉토리를 감지하는 방법은 무엇입니까?
- 13. .git 디렉토리를 삭제하는 방법은 무엇입니까?
- 14. Git으로 디렉토리를 추적하는 방법은 없지만 파일을 추적하는 방법은 무엇입니까?
- 15. gcc : 표준 포함 경로를 무시하는 방법은 무엇입니까?
- 16. diff가있는 문자열로 시작하는 줄을 무시하는 방법은 무엇입니까?
- 17. PHP 폼에서 파일 입력을 무시하는 방법은 무엇입니까?
- 18. 정렬시 빈 문자열을 무시하는 방법은 무엇입니까?
- 19. IE8에서 브라우저 모드 설정을 무시하는 방법은 무엇입니까?
- 20. J2ME에서 사용자 확인을 무시하는 방법은 무엇입니까?
- 21. HG의 특정 폴더를 무시하는 방법은 무엇입니까?
- 22. 신호를 무시하는 STDIN_FILENO에서 선택하는 방법은 무엇입니까?
- 23. Mac에서 환경 변수를 무시하는 방법은 무엇입니까?
- 24. PHP를 사용하여 로컬 네트워크에서 디렉토리를 이동하는 방법은 무엇입니까?
- 25. readdir (3) 이상한 행동 :/dev/
- 26. mod_rewrite를 사용하여 URL에서 디렉토리를 제거하는 방법은 무엇입니까?
- 27. iOS : 임시 디렉토리를 만드는 안전한 방법은 무엇입니까?
- 28. .NET을 사용하여 디렉토리를 압축하는 방법은 무엇입니까?
- 29. svn에서 디렉토리를 수동으로 제거하는 방법은 무엇입니까?
- 30. git 브랜치간에 디렉토리를 공유하는 방법은 무엇입니까?
경로를 lstat에 전달하기 전에 dirname과 filename을 결합해야합니다 (예 : sprintf (경로, "% s/% s", dir_name, de-> d_name); –
디렉토리 엔트리 ('S_ISDIR')를 제외하는 것보다는 정규 파일 엔트리 ('S_ISREG') 만 처리하는 것이 좀 더 견고합니다. 그렇게하면 다른 유형의 항목을 실행하면 실수로 처리하지 않습니다. –
그리고 다른 것을 알아 챘습니다. 'stat' 또는'lstat'를 사용할 지에 대해 생각할 필요가 있습니다. 실제 파일에 대한 심볼릭 링크가있는 경우 처리하거나 건너 뛰시겠습니까? 그것을 건너 뛰고 싶다면,'lstat'을 사용하여 심볼릭 링크임을 알 수 있습니다. symlink에 대해 신경 쓰지 않고 일반 파일에 대한 심볼릭 링크라고 가정하고 처리하고 싶다면'stat'를 사용하십시오. –