lxgui
Loading...
Searching...
No Matches
utils_file_system.cpp
1#include "lxgui/utils_file_system.hpp"
2
3#include "lxgui/utils_std.hpp"
4#include "lxgui/utils_string.hpp"
5
6#include <filesystem>
7
8namespace lxgui::utils {
9
10bool file_exists(const std::string& file) {
11 return std::filesystem::exists(file) && std::filesystem::is_regular_file(file);
12}
13
14string_vector get_directory_list(const std::string& rel_path) {
15 string_vector dir_list;
16 for (const auto& entry : std::filesystem::directory_iterator(rel_path)) {
17 if (entry.is_directory())
18 dir_list.push_back(entry.path().filename().u8string());
19 }
20
21 return dir_list;
22}
23
24string_vector get_file_list(const std::string& rel_path, bool with_path) {
25 string_vector file_list;
26 for (const auto& entry : std::filesystem::directory_iterator(rel_path)) {
27 if (entry.is_regular_file()) {
28 if (with_path)
29 file_list.push_back(entry.path().relative_path().u8string());
30 else
31 file_list.push_back(entry.path().filename().u8string());
32 }
33 }
34
35 return file_list;
36}
37
39get_file_list(const std::string& rel_path, bool with_path, const std::string& extensions) {
40 auto extension_list = utils::cut(extensions, ",");
41 for (auto& extension : extension_list)
42 extension = utils::trim(extension, ' ');
43
44 string_vector file_list;
45 for (const auto& entry : std::filesystem::directory_iterator(rel_path)) {
46 if (entry.is_regular_file()) {
47 if (utils::find(extension_list, entry.path().extension().u8string()) !=
48 extension_list.end()) {
49 if (with_path)
50 file_list.push_back(entry.path().relative_path().u8string());
51 else
52 file_list.push_back(entry.path().filename().u8string());
53 }
54 }
55 }
56
57 return file_list;
58}
59
60bool make_directory(const std::string& path) {
61 std::filesystem::create_directories(path);
62 return std::filesystem::exists(path) && std::filesystem::is_directory(path);
63}
64
65std::string get_file_extension(const std::string& file) {
66 return std::filesystem::path(file).extension().u8string();
67}
68
69} // namespace lxgui::utils
auto find(C &v, const T &s)
Definition utils_std.hpp:14
bool make_directory(const std::string &path)
string_vector get_file_list(const std::string &rel_path, bool with_path)
string_vector get_directory_list(const std::string &rel_path)
std::string get_file_extension(const std::string &file)
bool file_exists(const std::string &file)
std::vector< std::string > string_vector