xtd - Reference Guide  0.1.1
Modern c++17/20 framework to create console, GUI and unit test applications on Windows, macOS, Linux, iOS and android.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
path.h
Go to the documentation of this file.
1 #pragma once
5 
6 #include <cstdlib>
7 #include <random>
8 #include <regex>
9 #include <sstream>
10 #include "../core_export.h"
11 #include "../static.h"
12 #include "../ustring.h"
14 //#include "drive_into.h"
15 #include "file.h"
16 
17 //#include <iostream>
18 
20 namespace xtd {
22  namespace io {
30  public:
38  template<typename char_t>
39  static char_t alt_directory_separator_char() noexcept {return static_cast<char_t>('/');}
40 
48  static char alt_directory_separator_char() noexcept;
49 
61  static xtd::ustring change_extension(const xtd::ustring& path, const xtd::ustring& extension);
62 
68  static xtd::ustring combine(const xtd::ustring& path1, const xtd::ustring& path2);
69 
76  template<typename type1_t, typename type2_t, typename type3_t>
77  static auto combine(type1_t path1, type2_t path2, type3_t path3) noexcept {
78  return combine(combine(path1, path2), path3);
79  }
80 
88  template<typename type1_t, typename type2_t, typename type3_t, typename type4_t>
89  static auto combine(type1_t path1, type2_t path2, type3_t path3, type4_t path4) noexcept {
90  return combine(combine(combine(path1, path2), path3), path4);
91  }
92 
97  template<typename path_t>
98  static xtd::ustring combine(path_t paths) noexcept {
99  xtd::ustring result;
100  for (auto path : paths)
101  result = combine(result, path);
102  return result;
103  }
104 
109  static xtd::ustring combine(const std::initializer_list<xtd::ustring>& paths) noexcept;
110 
117  template<typename char_t>
118  static char_t directory_separator_char() noexcept {
119  return __is_windows_os() ? static_cast<char_t>('\\') : static_cast<char_t>('/');
120  }
121 
128  static char directory_separator_char() noexcept;
129 
134  static xtd::ustring get_directory_name(const xtd::ustring& path);
135 
140  static xtd::ustring get_extension(const xtd::ustring& path);
141 
146  static xtd::ustring get_file_name(const xtd::ustring& path);
147 
148  static xtd::ustring get_file_name_without_extension(const xtd::ustring& path);
149 
153  static xtd::ustring get_full_path(const xtd::ustring& path);
154 
158  template<typename char_t>
159  static std::vector<char_t> get_invalid_path_chars() noexcept {return {34, 60, 62, 124, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0};}
160 
164  static std::vector<char> get_invalid_path_chars() noexcept;
165 
171  static xtd::ustring get_path_root(const xtd::ustring& path);
172 
176  static xtd::ustring get_random_file_name();
177 
183  static xtd::ustring get_temp_file_name();
184 
192  static xtd::ustring get_temp_path() noexcept;
193 
199  static bool has_extension(const xtd::ustring& path);
200 
206  static bool is_path_rooted(const xtd::ustring& path);
207 
212  template<typename char_t>
213  static char_t path_separator() noexcept {return static_cast<char_t>(':');}
214 
219  static char path_separator() noexcept;
220 
225  template<typename char_t>
226  static char_t volume_separator_char() noexcept {return __is_windows_os() ? ':' : '/';}
227 
232  static char volume_separator_char() noexcept;
233 
234  private:
235  static int __get_index_path_rooted(const xtd::ustring& path);
236  static bool __is_windows_os() noexcept;
237  static bool __is_drive(const xtd::ustring& path) noexcept;
238  };
239  }
240 }
Performs operations on std::basic_string instances that contain file or directory path information....
Definition: path.h:29
static char_t directory_separator_char() noexcept
Provides a platform-specific character used to separate directory levels in a path string that reflec...
Definition: path.h:118
static char path_separator() noexcept
A platform-specific separator character used to separate path strings in environment variables.
static char_t alt_directory_separator_char() noexcept
Provides a platform-specific alternate character used to separate directory levels in a path string t...
Definition: path.h:39
static auto combine(type1_t path1, type2_t path2, type3_t path3, type4_t path4) noexcept
Combines four path strings.
Definition: path.h:89
static char volume_separator_char() noexcept
Provides a platform-specific volume separator character.
static xtd::ustring combine(const std::initializer_list< xtd::ustring > &paths) noexcept
Combines path strings array.
static char alt_directory_separator_char() noexcept
Provides a platform-specific alternate character used to separate directory levels in a path string t...
static std::vector< char > get_invalid_path_chars() noexcept
Gets an array containing the characters that are not allowed in path names.
static xtd::ustring combine(path_t paths) noexcept
Combines path strings array.
Definition: path.h:98
static char directory_separator_char() noexcept
Provides a platform-specific character used to separate directory levels in a path string that reflec...
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:48
Contains xtd::io::file class.
#define static_
This keyword is use to represent a static object. A static object can't be instantiated (constructors...
Definition: static.h:38
#define core_export_
Define shared library export.
Definition: core_export.h:13
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition: system_report.h:17