2014-09-05 1 views
-1

첫째, 불쾌한 제목으로 불편을 끼쳐 드려 죄송합니다. 내 같은 동일한 출력을 가진C++에 디렉터리 내용 표시 문제

Reading The Contents of Directories

THREAD (C Programming) :

Display files contain inside a particular directory by using C++ in LINUX

이 내가 참조 소스는 다음과 같습니다

난 그냥 묻는 문제이다.

파일 시스템 폴더 내용

- test.txt 
- abc.txt 
- item.txt 
- records.txt 

MAIN.CPP

#include <iostream> 
#include <dirent.h> 
using namespace std; 

int main() 
{ 
    Dir* dir = opendir("/home/user/desktop/TEST/FileSystem"); 
    struct dirent* entry; 

    cout<<"Directory Contents: "<<endl; 
    while((entry = readdir(dir)) != NULL) 
    { 
     cout << "%s " << entry->d_name << endl; 
    }  
} 

OUTPUT

Directory Contents: 

%s .. 
%s item.txt 
%s test.txt 
%s records.txt 
%s . 
%s abc.txt 

가 표시됩니다 왜 내 주요 질문 인 ".."및 "." OUTPUT에서. 그것이 왜 거기에있을 것인가, 어떤 특별한 의미/목적이 있는가? 어떻게 제거하고 그냥 파일을 표시합니까 만 폴더에 있습니까?

제 질문에 답해 주셔서 감사합니다. 나는 너희들이 내가 많이 묻는 것을 꺼리지 않기를 바란다.

+2

'.' - 현재 디렉토리,'..' - 부모 디렉토리 –

+0

@PiotrS. 귀하의 정보를 주셔서 감사합니다 :) – J4X

답변

0

유닉스와 윈도우에서는 모든 디렉토리가 항상 "." (디렉토리 자체)과 ".." (부모가없는 드문 경우)이라는 두 항목을 포함합니다. 유닉스에서 일반적으로 규칙은 '.'으로 시작하는 디렉토리가 "숨김"되어 표시되지 않지만 표시 프로그램에 달려있다. 디렉토리를 읽을 때 여전히 볼 수 있습니다. 이 규칙을 따르십시오, 당신의 루프에서 간단한 if는 당신이 필요로하는 모든 것입니다 :

dirent* entry = readdir(dir); 
while (entry != nullptr) { 
    if (entry->d_name[0] != '.') { 
     std::cout << entry->d_name << std::endl; 
    } 
    entry = readdir(dir); 
} 
+0

답장을 보내 주셔서 감사합니다! :) @ 제임스 Kanze – J4X