Во-первых, извините за плохое название, которое я назвал.
Это вопрос, который я только что задал:
Отображать файлы, содержащиеся в определенном каталоге, используя C ++ в LINUX
Это источник, на который я ссылаюсь:
это РЕЗЬБА (C Программирование) с таким же выходом, как у меня.
Содержимое папки 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
Мой главный вопрос, почему он будет отображать «..» и «.» на выходе. Почему это будет там, есть ли какое-то особое значение / цели? Как мне избавиться от этого и просто отображать файлы ТОЛЬКО в папке?
Заранее благодарю вас, ребята, за ответ на мой вопрос. Надеюсь, вы, ребята, не против, я задам много вопросов.
В 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 );
}