xtd 0.2.0
directory_info.h
Go to the documentation of this file.
1 #pragma once
5 #include "file_system_info.h"
6 #include "../iequatable.h"
7 #include <iterator>
8 #include <memory>
9 
11 namespace xtd {
13  namespace io {
15  class directory;
16  class file_info;
18 
125  class core_export_ directory_info final : public xtd::io::file_system_info {
126  public:
128  class directory_iterator : public xtd::iequatable<directory_iterator> {
129  struct data;
130 
131  explicit directory_iterator(const xtd::ustring& path, const xtd::ustring& pattern);
132  public:
134  using iterator_category = std::input_iterator_tag;
135  using value_type = xtd::io::directory_info;
136  using difference_type = xtd::io::directory_info;
137  using pointer = xtd::io::directory_info*;
138  using reference = xtd::io::directory_info&;
139 
141  directory_iterator(const directory_iterator&) = default;
143 
144  directory_iterator& operator ++();
145  directory_iterator operator ++(int32);
146  value_type operator *() const;
149  bool equals(const directory_iterator& other) const noexcept override;
150 
151  xtd::ustring path() const;
152  xtd::ustring pattern() const;
154 
155  private:
156  friend xtd::io::directory;
158 
159  std::shared_ptr<data> data_;
160  };
161 
163  class file_iterator : public xtd::iequatable<file_iterator> {
164  struct data;
165 
166  explicit file_iterator(const std::string& path, const std::string& pattern);
167  public:
169  using iterator_category = std::input_iterator_tag;
170  using value_type = xtd::io::file_info;
171  using difference_type = xtd::io::file_info;
172  using pointer = xtd::io::file_info*;
173  using reference = xtd::io::file_info&;
174 
175  file_iterator();
176  file_iterator(const file_iterator&) = default;
177  file_iterator(file_iterator&&) = default;
178 
179  file_iterator& operator ++();
180  file_iterator operator ++(int32);
181  value_type operator *() const;
184  bool equals(const file_iterator& other) const noexcept override;
185 
186  xtd::ustring path() const;
187  xtd::ustring pattern() const;
189 
190  private:
191  friend xtd::io::directory;
193 
194  std::shared_ptr<data> data_;
195  };
196 
198  class file_system_info_iterator : public xtd::iequatable<file_system_info_iterator> {
199  struct data;
200 
201  explicit file_system_info_iterator(const std::string& path, const std::string& pattern);
202  public:
204  using iterator_category = std::input_iterator_tag;
205  using value_type = std::shared_ptr<xtd::io::file_system_info>;
206  using difference_type = std::shared_ptr<xtd::io::file_system_info>;
207  using pointer = std::shared_ptr<xtd::io::file_system_info>* ;
208  using reference = std::shared_ptr<xtd::io::file_system_info>& ;
209 
213 
214  file_system_info_iterator& operator ++();
215  file_system_info_iterator operator ++(int32);
216  value_type operator *() const;
219  bool equals(const file_system_info_iterator& other) const noexcept override;
220 
221  xtd::ustring path() const;
222  xtd::ustring pattern() const;
224 
225  private:
226  friend xtd::io::directory;
228 
229  std::shared_ptr<data> data_;
230  };
231 
233 
236  static const directory_info empty;
238 
240 
281  explicit directory_info(const xtd::ustring& path);
283 
285 
331  bool exists() const override;
332 
357  xtd::ustring name() const override;
358 
398  xtd::io::directory_info parent() const;
399 
437  xtd::io::directory_info root() const;
439 
441 
485  void create();
486 
532  xtd::io::directory_info create_subdirectory(const xtd::ustring& path) const;
533 
571  xtd::io::directory_info::directory_iterator enumerate_directories() const;
592  xtd::io::directory_info::directory_iterator enumerate_directories(const xtd::ustring& search_pattern) const;
593 
691  xtd::io::directory_info::file_iterator enumerate_files() const;
768  xtd::io::directory_info::file_iterator enumerate_files(const xtd::ustring& search_pattern) const;
769 
784  xtd::io::directory_info::file_system_info_iterator enumerate_file_system_infos() const;
806  xtd::io::directory_info::file_system_info_iterator enumerate_file_system_infos(const xtd::ustring& search_pattern) const;
807 
845  std::vector<xtd::io::directory_info> get_directories() const;
893  std::vector<xtd::io::directory_info> get_directories(const xtd::ustring& search_pattern) const;
894 
964  std::vector<xtd::io::file_info> get_files() const;
1041  std::vector<xtd::io::file_info> get_files(const xtd::ustring& search_pattern) const;
1042 
1126  std::vector<std::shared_ptr<xtd::io::file_system_info>> get_file_system_infos() const;
1221  std::vector<std::shared_ptr<xtd::io::file_system_info>> get_file_system_infos(const xtd::ustring& search_pattern) const;
1222 
1275  void move_to(const xtd::ustring& dest_dir_name);
1276 
1314  void remove() const override;
1315 
1359  void remove(bool recursive) const;
1361 
1362  private:
1363  directory_info() = default;
1364  };
1365  }
1366 }
The file is a directory.
Provides the base class for both xtd::io::file_info and xtd::io::directory_info objects.
Definition: file_system_info.h:84
Represent directory iterator used by xtd::io::directory_info.
Definition: directory_info.h:128
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
Exposes static methods for creating, moving, and enumerating through directories and subdirectories...
Definition: directory.h:97
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:46
Contains xtd::io::file_system_info class.
Exposes instance methods for creating, moving, and enumerating through directories and subdirectories...
Definition: directory_info.h:125
Represent file iterator used by xtd::io::directory_info.
Definition: directory_info.h:163
Performs operations on std::basic_string instances that contain file or directory path information...
Definition: path.h:34
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition: iequatable.h:18
The operating system is other.
Provides static methods for the creation, copying, deletion, moving, and opening of files...
Definition: file_info.h:39
static const directory_info empty
Represents the uninitialized xtd::io::directory_info object. This field is constant.
Definition: directory_info.h:236
int_least32_t int32
Represents a 32-bit signed integer.
Definition: types.h:129
Represent file system iterator used by xtd::io::directory_info.
Definition: directory_info.h:198