2014-09-05 7 views
-1

Во-первых, Извините за неправильное название, которое я назвал.C++ отображение содержимого каталогов

Это вопрос, который я просто спросил:

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

Это источник, который я имею в виду:

Reading The Contents of Directories

Этот THREAD (C Programming), имеющий тот же результат, как у меня.

FileSystem содержимого папки

- 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; 
    }  
} 

ВЫХОДА

Directory Contents: 

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

Мой главный вопрос, почему он будет отображать ".." и "" на выходе. Почему он будет там, есть ли какое-то особое значение/цели? Как мне избавиться от этого и просто отображать файлы ТОЛЬКО в папке?

Благодарим вас, ребята, отвечая на мой вопрос. Надеюсь, вы, ребята, не возражаете, я задаю много вопросов.

+2

'.' - текущий каталог,' ..' - родительский каталог –

+0

@PiotrS. отметил, спасибо за вашу информацию :) – J4X

ответ

0

В Unix и Windows все каталоги всегда содержат две записи "." (сама по себе директория) и ".." это родительский (или сам, в редких случаях, когда у него нет родителя). В Unix обычное соглашение состоит в том, что каталоги, имя которых начинается с '.', «скрыты» и не будут отображаться, но это зависит от программы отображения; когда вы читаете каталог, вы все равно видите их. Если вы хотите следовать этому соглашению, в цикле простой if все, что вам нужно:

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

Спасибо за ваш ответ! :) @ Джеймс Канзе – J4X

 Смежные вопросы

  • Нет связанных вопросов^_^