posix.dir_files.h.xml 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <chapter xml:id="posix.dir_files.h">
  2. <title><tt>__vic/posix/dir_files.h</tt></title>
  3. <chapter xml:id="posix--dir_files">
  4. <title><tt>posix::dir_files</tt></title>
  5. <code-block lang="C++"><![CDATA[
  6. class posix::dir_files : private non_copyable
  7. {
  8. public:
  9. dir_files();
  10. explicit dir_files(const char *dir, const char *pattern = nullptr);
  11. ~dir_files();
  12. // BEGIN C++11
  13. dir_files(dir_files &&o) noexcept;
  14. dir_files &operator=(dir_files &&o) noexcept;
  15. // END C++11
  16. bool reopen(const char *dir, const char *pattern = nullptr);
  17. void close();
  18. bool is_open() const;
  19. const char *next();
  20. void rewind();
  21. };
  22. ]]></code-block>
  23. <p>Класс аналогичен классу <tt>dir_entries</tt>, но игнорирует все элементы
  24. каталога, не являющиеся регулярными файлами. Также имеется возможность задания
  25. опциональной маски имён файлов с помощью параметра <tt>pattern</tt>.</p>
  26. <section><title>Пример</title>
  27. <code-block lang="C++"><![CDATA[
  28. // Выводит список cpp-файлов в текущем каталоге
  29. __vic::posix::dir_files files(".", "*.cpp");
  30. if(!files.is_open())
  31. __vic::throw_errno("Can't open directory for listing");
  32. while(const char *file = files.next())
  33. std::cout << file << '\n';
  34. ]]></code-block>
  35. </section>
  36. </chapter>
  37. </chapter>