首先,对于我所说的错误标题感到抱歉。
这是我刚才提出的问题:
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 ?
提前感谢你们回答我的问题。我希望你们不介意我提出很多问题。
答案 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 );
}