C ++显示目录内容问题

时间:2014-09-05 13:29:59

标签: c++ linux dirent.h

首先,对于我所说的错误标题感到抱歉。

这是我刚才提出的问题:

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

这是我所指的来源:

Reading The Contents of Directories

THREAD (C Programming)具有与我相同的输出。

文件系统文件夹内容

- 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

我的主要问题是为什么它会显示“..”和“。”。在OUTPUT上。为什么它会存在,是否有任何特殊意义/目的?如何摆脱这种情况,只在文件夹中显示文件 ONLY

提前感谢你们回答我的问题。我希望你们不介意我提出很多问题。

1 个答案:

答案 0 :(得分:0)

在Unix和Windows中,所有目录始终包含两个条目"."(目录本身)和".."它的父级(或者本身,在极少数情况下它没有父级)。在Unix下,通常的惯例是名称以'.'开头的目录是&#34;隐藏&#34;,并且不会显示,但这取决于显示程序;当你读一个目录时,你仍然可以看到它们。如果您想遵循此约定,您只需要循环中的简单if

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