38 using Status = std::filesystem::file_status;
77 return std::filesystem::exists(
status());
85 return _path.filename().string();
93 return _path.stem().string();
101 auto ext = _path.extension().string();
103 return ext.substr(1);
111 return _path.parent_path().string();
119 return std::filesystem::absolute(_path).string();
127 return std::filesystem::is_regular_file(
status());
135 return std::filesystem::is_directory(
status());
143 if(!_status.has_value() ||
force) {
144 _status = std::filesystem::status(_path);
156 return _status.value();
164 return isFile() ? std::filesystem::file_size(_path) : 0;
173 auto perms = std::filesystem::status(_path,
ec).permissions();
174 return (
perms & std::filesystem::perms::owner_read) != std::filesystem::perms::none;
183 auto perms = std::filesystem::status(_path,
ec).permissions();
184 return (
perms & std::filesystem::perms::owner_write) != std::filesystem::perms::none;
193 auto perms = std::filesystem::status(_path,
ec).permissions();
194 return (
perms & std::filesystem::perms::owner_exec) != std::filesystem::perms::none;
198 std::filesystem::path _path;
199 mutable std::optional<Status> _status;
Provides information about a file system entry.
Definition fileinfo.h:35
Status status(bool forceUpdate=false) const
Returns the file status, updating the cache if needed.
Definition fileinfo.h:154
void updateStatus(bool force=false) const
Updates the cached file status.
Definition fileinfo.h:142
String absoluteFilePath() const
Returns the absolute path to the file, including the filename.
Definition fileinfo.h:118
bool isExecutable() const
Returns true if the file is executable by the owner.
Definition fileinfo.h:191
FileInfo(const FilePath &fp)
Constructs a FileInfo from a FilePath.
Definition fileinfo.h:60
std::uintmax_t size() const
Returns the file size in bytes.
Definition fileinfo.h:163
bool exists() const
Returns true if the file or directory exists.
Definition fileinfo.h:76
bool isWritable() const
Returns true if the file is writable by the owner.
Definition fileinfo.h:181
String suffix() const
Returns the file extension without the leading dot.
Definition fileinfo.h:100
std::filesystem::file_status Status
File status type from the standard filesystem library.
Definition fileinfo.h:38
FilePath filePath() const
Returns the path as a FilePath.
Definition fileinfo.h:68
bool isReadable() const
Returns true if the file is readable by the owner.
Definition fileinfo.h:171
String baseName() const
Returns the filename without its extension.
Definition fileinfo.h:92
bool isFile() const
Returns true if the path refers to a regular file.
Definition fileinfo.h:126
FileInfo(const String &filePath)
Constructs a FileInfo for the given file path.
Definition fileinfo.h:44
FileInfo(const char *filePath)
Constructs a FileInfo from a C string.
Definition fileinfo.h:52
String fileName() const
Returns the filename component of the path (including extension).
Definition fileinfo.h:84
String absolutePath() const
Returns the absolute path of the parent directory.
Definition fileinfo.h:110
bool isDirectory() const
Returns true if the path refers to a directory.
Definition fileinfo.h:134
Simple value type wrapping std::filesystem::path.
Definition filepath.h:27
Dynamic array container wrapping std::vector.
Definition list.h:40
Encoding-aware string class with copy-on-write semantics.
Definition string.h:35
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19