xtd 0.2.0
directory.h
Go to the documentation of this file.
1 #pragma once
5 #include "directory_info.h"
6 #include "../core_export.h"
7 #include "../date_time.h"
8 #include "../iequatable.h"
9 #include "../static.h"
10 #include <tuple>
11 
13 namespace xtd {
15  namespace io {
97  class core_export_ directory static_ {
98  public:
100  class directory_iterator : public xtd::iequatable<directory_iterator> {
101  struct data;
102 
103  explicit directory_iterator(const xtd::ustring& path, const xtd::ustring& pattern);
104  public:
106  using iterator_category = std::input_iterator_tag;
107  using value_type = xtd::ustring;
108  using difference_type = xtd::ustring;
109  using pointer = xtd::ustring*;
110  using reference = xtd::ustring&;
111 
113  directory_iterator(const directory_iterator&) = default;
115 
116  directory_iterator& operator ++();
117  directory_iterator operator ++(int32);
118  value_type operator *() const;
121  bool equals(const directory_iterator& other) const noexcept override;
123 
124  private:
125  friend xtd::io::directory;
126 
127  std::shared_ptr<data> data_;
128  };
129 
131  class file_iterator : public xtd::iequatable<file_iterator> {
132  struct data;
133 
134  explicit file_iterator(const std::string& path, const std::string& pattern);
135  public:
137  using iterator_category = std::input_iterator_tag;
138  using value_type = xtd::ustring;
139  using difference_type = xtd::ustring;
140  using pointer = xtd::ustring*;
141  using reference = xtd::ustring&;
142 
143  file_iterator();
144  file_iterator(const file_iterator&) = default;
145  file_iterator(file_iterator&&) = default;
146 
147  file_iterator& operator ++();
148  file_iterator operator ++(int);
149  value_type operator *() const;
150  xtd::io::directory::file_iterator begin() const;
152  bool equals(const file_iterator& other) const noexcept override;
154 
155  private:
156  friend xtd::io::directory;
157 
158  std::shared_ptr<data> data_;
159  };
160 
162  class file_system_entry_iterator : public xtd::iequatable<file_system_entry_iterator> {
163  struct data;
164 
165  explicit file_system_entry_iterator(const std::string& path, const std::string& pattern);
166  public:
168  using iterator_category = std::input_iterator_tag;
169  using value_type = xtd::ustring;
170  using difference_type = xtd::ustring;
171  using pointer = xtd::ustring*;
172  using reference = xtd::ustring&;
173 
177 
178  file_system_entry_iterator& operator ++();
179  file_system_entry_iterator operator ++(int32);
180  value_type operator *() const;
183  bool equals(const file_system_entry_iterator& other) const noexcept override;
185 
186  private:
187  friend xtd::io::directory;
188 
189  std::shared_ptr<data> data_;
190  };
191 
193 
252  static xtd::io::directory_info create_directory(const xtd::ustring& path);
253 
296  static xtd::io::directory::directory_iterator enumerate_directories(const xtd::ustring& path);
349  static xtd::io::directory::directory_iterator enumerate_directories(const xtd::ustring& path, const xtd::ustring& search_pattern);
350 
390  static xtd::io::directory::file_iterator enumerate_files(const xtd::ustring& path);
438  static xtd::io::directory::file_iterator enumerate_files(const xtd::ustring& path, const xtd::ustring& search_pattern);
439 
450  static xtd::io::directory::file_system_entry_iterator enumerate_file_system_entries(const xtd::ustring& path);
469  static xtd::io::directory::file_system_entry_iterator enumerate_file_system_entries(const xtd::ustring& path, const xtd::ustring& search_pattern);
470 
526  static bool exists(const xtd::ustring& path);
527 
569  static xtd::date_time get_creation_time(const xtd::ustring& path);
570 
612  static xtd::ustring get_current_directory();
613 
675  static std::vector<xtd::ustring> get_directories(const xtd::ustring& path);
723  static std::vector<xtd::ustring> get_directories(const xtd::ustring& path, const xtd::ustring& search_pattern);
724 
765  static xtd::ustring get_directory_root(const xtd::ustring& path);
766 
829  static std::vector<xtd::ustring> get_files(const xtd::ustring& path);
883  static std::vector<xtd::ustring> get_files(const xtd::ustring& path, const xtd::ustring& search_pattern);
884 
997  static std::vector<xtd::ustring> get_file_system_entries(const xtd::ustring& path);
1123  static std::vector<xtd::ustring> get_file_system_entries(const xtd::ustring& path, const xtd::ustring& search_pattern);
1124 
1176  static xtd::date_time get_last_access_time(const xtd::ustring& path);
1177 
1228  static xtd::date_time get_last_write_time(const xtd::ustring& path);
1229 
1334  static std::vector<xtd::ustring> get_logical_drives();
1335 
1447  static xtd::io::directory_info get_parent(const xtd::ustring& path);
1448 
1453  static xtd::io::file_permissions get_permissions(const xtd::ustring& path);
1454 
1490  static void move(const xtd::ustring& source_dir_name, const xtd::ustring& dest_dir_name);
1491 
1535  static void remove(const xtd::ustring& path);
1536 
1585  static void remove(const xtd::ustring& path, bool recursive);
1586 
1642  static void set_creation_time(const xtd::ustring& path, const xtd::date_time& creation_time);
1698  static void set_creation_time(const xtd::ustring& path, time_t creation_time);
1699 
1743  static void set_current_directory(const xtd::ustring& path);
1744 
1792  static void set_last_access_time(const xtd::ustring& path, const xtd::date_time& last_access_time);
1793 
1841  static void set_last_write_time(const xtd::ustring& path, const xtd::date_time& last_write_time);
1842 
1853  static void set_permissions(const xtd::ustring& path, xtd::io::file_permissions permissions);
1855 
1856  private:
1857  static std::tuple<time_t, time_t, time_t> get_file_times(const ustring& path);
1858  };
1859  }
1860 }
#define static_
This keyword is use to represent a static object. A static object can&#39;t be instantiated (constructors...
Definition: static.h:37
Represent file system iterator used by xtd::io::directory.
Definition: directory.h:162
Represent file iterator used by xtd::io::directory.
Definition: directory.h:131
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
Exposes instance methods for creating, moving, and enumerating through directories and subdirectories...
Definition: directory_info.h:125
Represent directory iterator used by xtd::io::directory.
Definition: directory.h:100
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
Represents an instant in time, typically expressed as a date and time of day.
Definition: date_time.h:78
The operating system is other.
int_least32_t int32
Represents a 32-bit signed integer.
Definition: types.h:129
Contains xtd::io::directory_info class.
file_permissions
Provides permissions for files and directories.
Definition: file_permissions.h:22