AUI Framework  master
Cross-platform module-based framework for developing C++20 desktop applications
APath Class Referencefinal

An add-on to AString with functions for working with the path. More...

Detailed Description

An add-on to AString with functions for working with the path.

Note
In most file systems, both a regular file and a folder with the same name can exist on the same path.

Example usage:

APath someDir = "someDir";
APath filePath = someDir / "myfile.txt"; // "/" replaced with a system file separator
An add-on to AString with functions for working with the path.
Definition: APath.h:106
Note
Sometimes the word "file" refers to both a regular file (txt, png, jpeg, etc.) and a folder (directory, a file that contains other regular files and folders), i.e. a unit of the file system, which is often a confusion in terminology. Here and further:
  • file - a unit of the file system.
  • regular file - a file that can be read or written to. You can think of as a sequence of bytes or a stream of bytes.
  • folder (directory) - a file that may have child files (both regular files and folders)
Examples
/github/workspace/aui.core/src/AUI/IO/APath.h, and /github/workspace/aui.json/src/AUI/Json/Conversion.h.

Public Types

enum  DefaultPath { APPDATA , TEMP , HOME }
 
- Public Types inherited from AString
using iterator = super::iterator
 
using value_type = super::value_type
 
using const_iterator = super::const_iterator
 
using reverse_iterator = super::reverse_iterator
 
using const_reverse_iterator = super::const_reverse_iterator
 

Public Member Functions

 APath (AString &&other) noexcept
 
 APath (const AString &other) noexcept
 
 APath (const char *utf8) noexcept
 
 APath (const char *utf8, std::size_t length) noexcept
 
 APath (const char16_t *str) noexcept
 
 APath (const char16_t *str, std::size_t length) noexcept
 
const APathtouch () const
 
AString systemSlashDirection () const
 
APath absolute () const
 Get the absolute (full) path to the file. More...
 
ADeque< APathlistDir (AFileListFlags f=AFileListFlags::DEFAULT_FLAGS) const
 Get list of (by default) direct children of this folder. This function outputs paths including the path listDir was called on. More...
 
APath parent () const
 
APath file (const AString &fileName) const
 
APath filename () const
 
APath filenameWithoutExtension () const
 
APath withoutUppermostFolder () const
 
bool exists () const
 
bool isRegularFileExists () const
 
bool isDirectoryExists () const
 
const APathremoveFile () const
 Delete file. Relevant for empty folders and regular files. More...
 
const APathremoveFileRecursive () const
 Delete files recursively. Relevant for folders. More...
 
const APathmakeDir () const
 Create folder. More...
 
const APathmakeDirs () const
 Create all nonexistent folders on the path. More...
 
AString relativelyTo (const APath &dir) const
 
APath extensionChanged (const AString &newExtension) const
 Returns same path but with extension changed.
 
bool isAbsolute () const
 Checks whether path absolute or not. More...
 
bool isRelative () const
 Checks whether path absolute or not. More...
 
time_t fileModifyTime () const
 
size_t fileSize () const
 
const APathchmod (int newMode) const
 
APath operator/ (const AString &filename) const
 Path of the child element. Relevant only for folders. More...
 
- Public Member Functions inherited from AString
 AString (AString &&other) noexcept
 
 AString (const basic_string &other) noexcept
 
 AString (const std::string &utf8) noexcept
 
 AString (const AString &other) noexcept
 
 AString (const basic_string &rhs, const std::allocator< char16_t > &allocator) noexcept
 
template<class Iterator >
 AString (Iterator first, Iterator last) noexcept
 
 AString (char16_t c) noexcept
 
 AString (const char *utf8) noexcept
 
 AString (std::string_view utf8) noexcept
 
 AString (const std::allocator< char16_t > &allocator) noexcept
 
 AString (const basic_string &rhs, size_type offset, const std::allocator< char16_t > &allocator) noexcept
 
 AString (const basic_string &rhs, size_type offset, size_type count, const std::allocator< char16_t > &allocator) noexcept
 
 AString (const char16_t *cStyleString, size_type count) noexcept
 
 AString (const char16_t *cStyleString, size_type count, const std::allocator< char16_t > &allocator) noexcept
 
 AString (const char16_t *cStyleString) noexcept
 
 AString (const char16_t *cStyleString, const std::allocator< char16_t > &allocator) noexcept
 
 AString (size_type count, char16_t _Ch) noexcept
 
 AString (size_type count, char16_t _Ch, const std::allocator< char16_t > &allocator) noexcept
 
 AString (basic_string &&rhs) noexcept
 
 AString (basic_string &&rhs, const std::allocator< char16_t > &allocator) noexcept
 
 AString (std::initializer_list< char16_t > _Ilist) noexcept
 
void push_back (char16_t c) noexcept
 
void pop_back () noexcept
 
AString uppercase () const
 
AString lowercase () const
 
bool startsWith (const AString &other) const noexcept
 
bool startsWith (char16_t c) const noexcept
 
bool endsWith (const AString &other) const noexcept
 
bool endsWith (char16_t c) const noexcept
 
AStringVector split (char16_t c) const noexcept
 
size_type find (char c, size_type offset=0) const noexcept
 
size_type find (char16_t c, size_type offset=0) const noexcept
 
size_type find (const AString &str, size_type offset=0) const noexcept
 
size_type rfind (char c, size_type offset=NPOS) const noexcept
 
size_type rfind (char16_t c, size_type offset=NPOS) const noexcept
 
size_type rfind (const AString &str, size_type offset=NPOS) const noexcept
 
size_type length () const noexcept
 
AString trimLeft (char16_t symbol=' ') const noexcept
 
AString trimRight (char16_t symbol=' ') const noexcept
 
AString trim (char16_t symbol=' ') const noexcept
 
void reserve (size_t s)
 
void resize (size_t s)
 
AString restrictLength (size_t s, const AString &stringAtEnd="...") const
 
char16_t * data () noexcept
 
const char16_t * data () const noexcept
 
AStringreplaceAll (const AString &from, const AString &to)
 
AString replacedAll (const AString &from, const AString &to) const
 
AString replacedAll (char16_t from, char16_t to) const noexcept
 
AString replacedAll (const ASet< char16_t > &from, char16_t to) const noexcept
 
AStringreplaceAll (char16_t from, char16_t to) noexcept
 
template<typename OtherContainer >
void insertAll (const OtherContainer &c) noexcept
 
AOptional< float > toFloat () const noexcept
 Converts the string to a float number. More...
 
AOptional< double > toDouble () const noexcept
 Converts the string to a double number. More...
 
double toDoubleOrException () const noexcept
 Converts the string to a double number. More...
 
AOptional< int > toInt () const noexcept
 Converts the string to int value. More...
 
int toIntOrException () const
 Converts the string to int value. More...
 
AOptional< int64_t > toLongInt () const noexcept
 Converts the string to int value. More...
 
int64_t toLongIntOrException () const
 Converts the string to int value. More...
 
AOptional< unsigned > toUInt () const noexcept
 Converts the string to int value. More...
 
unsigned toUIntOrException () const
 Converts the string to int value. More...
 
bool toBool () const noexcept
 Converts the string to boolean value. More...
 
bool contains (char16_t c) const noexcept
 
bool contains (const AString &other) const noexcept
 
AOptional< int > toNumber (aui::ranged_number< int, 2, 36 > base=TO_NUMBER_BASE_DEC) const noexcept
 Returns the string converted to an int using base. Returns std::nullopt if the conversion fails. More...
 
int toNumberOrException (aui::ranged_number< int, 2, 36 > base=TO_NUMBER_BASE_DEC) const
 Returns the string converted to an int using base. Throws an exception if the conversion fails. More...
 
std::string toStdString () const noexcept
 
void resizeToNullTerminator ()
 
iterator erase (const_iterator begin, const_iterator end) noexcept
 
iterator erase (const_iterator begin) noexcept
 
AStringerase (size_type offset) noexcept
 
AStringerase (size_type offset, size_type count) noexcept
 
AByteBuffer toUtf8 () const noexcept
 
void removeAt (unsigned at) noexcept
 
AString excessSpacesRemoved () const noexcept
 
iterator insert (size_type at, char16_t c) noexcept
 
iterator insert (size_type at, const AString &c) noexcept
 
template<typename Iterator >
iterator insert (const_iterator at, Iterator begin, Iterator end) noexcept
 
AStringoperator<< (char c) noexcept
 
AStringoperator<< (char16_t c) noexcept
 
inline ::AStringoperator+= (const AString &str) noexcept
 
inline ::AStringoperator+= (const char *str) noexcept
 
bool empty () const noexcept
 
size_type size () const noexcept
 
char16_t operator[] (size_type index) const
 
char16_t & operator[] (size_type index)
 
bool operator< (const AString &other) const noexcept
 
void clear () noexcept
 
char16_t & front () noexcept
 
char16_t & back () noexcept
 
const char16_t & front () const noexcept
 
const char16_t & back () const noexcept
 
char16_t & first () noexcept
 
char16_t & last () noexcept
 
const char16_t & first () const noexcept
 
const char16_t & last () const noexcept
 
const char16_t * c_str () const
 
iterator begin () noexcept
 
iterator end () noexcept
 
const_iterator begin () const noexcept
 
const_iterator end () const noexcept
 
reverse_iterator rbegin () noexcept
 
reverse_iterator rend () noexcept
 
const_reverse_iterator rbegin () const noexcept
 
const_reverse_iterator rend () const noexcept
 
AStringappend (const AString &s) noexcept
 
AStringappend (size_t count, char16_t ch) noexcept
 
const AStringoperator= (const AString &value) noexcept
 
const AStringoperator= (AString &&value) noexcept
 
bool operator== (const AString &other) const noexcept
 
bool operator== (const char16_t *other) const noexcept
 
size_t sizeInBytes () const noexcept
 
bool operator!= (const AString &other) const noexcept
 
bool operator!= (const char16_t *other) const noexcept
 
bool operator== (const char *other) const noexcept
 
bool operator!= (const char *other) const noexcept
 
template<typename... Args>
AString format (Args &&... args) const
 
AString processEscapes () const
 
AStringremoveAll (char16_t c) noexcept
 
AString substr (std::size_t offset, std::size_t count=npos) const
 

Static Public Member Functions

static APath getDefaultPath (DefaultPath path)
 Get system's default folder. More...
 
static void copy (const APath &source, const APath &destination)
 Copy regular file. More...
 
static void move (const APath &source, const APath &destination)
 Move regular file. More...
 
static APath workingDir ()
 
static AVector< APathfind (const AString &filename, const AVector< APath > &locations, APathFinder flags=APathFinder::NONE)
 
- Static Public Member Functions inherited from AString
static AString fromLatin1 (const AByteBuffer &buffer)
 
static AString fromUtf8 (const AByteBufferView &buffer)
 
static AString fromUtf8 (const char *buffer, size_t length)
 
static AString fromLatin1 (const char *buffer)
 
static AString numberHex (int i) noexcept
 
template<typename T , std::enable_if_t< std::is_integral_v< std::decay_t< T > >||std::is_floating_point_v< std::decay_t< T > >, int > = 0>
static AString number (T i) noexcept
 

Additional Inherited Members

- Static Public Attributes inherited from AString
constexpr static auto NPOS = super::npos
 
static constexpr auto TO_NUMBER_BASE_BIN = 2
 
static constexpr auto TO_NUMBER_BASE_OCT = 8
 
static constexpr auto TO_NUMBER_BASE_DEC = 10
 
static constexpr auto TO_NUMBER_BASE_HEX = 16
 

Member Enumeration Documentation

◆ DefaultPath

Enumerator
APPDATA 

Folder for application data. Windows: C:/Users/user%/.appdata/Roaming/ Linux: homedir%/.local/share/ Android: <internal_storage_path>/__aui_appdata.

TEMP 

Folder for temporary data. Windows: User's temp folder (temp%) Linux: /tmp Android: <internal_storage_path>/__aui_tmp.

HOME 

User home directory. Windows: User's home folder (C:\Users\USERNAME) Linux: /home/$USER.

Member Function Documentation

◆ absolute()

APath APath::absolute ( ) const

Get the absolute (full) path to the file.

Returns
the absolute (full) path to the file

◆ copy()

void APath::copy ( const APath source,
const APath destination 
)
static

Copy regular file.

Parameters
sourcesource file
destinationdestination file

◆ exists()

bool APath::exists ( ) const
Returns
true if whether regular file or a folder exists on this path
Note
A file can exist as a regular file or(and) as a folder. This function will return false only if neither the folder nor the file does not exists on this path.

Checkout the isRegularFileExists or isDirectoryExists function to check which type of the file exists on this path.

◆ find()

AVector< APath > APath::find ( const AString filename,
const AVector< APath > &  locations,
APathFinder  flags = APathFinder::NONE 
)
static

Searches for file in specified dirs.

Parameters
filenameName of the file searching for
locationspaths to directories to search for the file in
Returns
full path to the found file; if file not found, an empty string is returned.

◆ getDefaultPath()

APath APath::getDefaultPath ( APath::DefaultPath  path)
static

Get system's default folder.

Note
See the APath::DefaultPath definition.
Returns
absolute path to default folder.

◆ isAbsolute()

bool APath::isAbsolute ( ) const

Checks whether path absolute or not.

Returns
true if path is absolute

◆ isDirectoryExists()

bool APath::isDirectoryExists ( ) const
Returns
true if folder exists on this path
Note
A file can exist as a regular file or(and) as a folder. This function will return false only if folder does not exists on this path.

◆ isRegularFileExists()

bool APath::isRegularFileExists ( ) const
Returns
true if regular file exists on this path
Note
A file can exist as a regular file or(and) as a folder. This function will return false only if regular file does not exists on this path.

◆ isRelative()

bool APath::isRelative ( ) const
inline

Checks whether path absolute or not.

Returns
true if path is relative

◆ listDir()

ADeque< APath > APath::listDir ( AFileListFlags  f = AFileListFlags::DEFAULT_FLAGS) const

Get list of (by default) direct children of this folder. This function outputs paths including the path listDir was called on.

Note
Use AFileListFlags enum flags to customize behaviour of this function.
Returns
list of children of this folder.

◆ makeDir()

const APath & APath::makeDir ( ) const

Create folder.

Returns
this

◆ makeDirs()

const APath & APath::makeDirs ( ) const

Create all nonexistent folders on the path.

Returns
this

◆ move()

void APath::move ( const APath source,
const APath destination 
)
static

Move regular file.

Parameters
sourcesource file
destinationdestination file

◆ operator/()

APath APath::operator/ ( const AString filename) const
inline

Path of the child element. Relevant only for folders.

AString filename = "file.txt";
APath path = "path" / "to" / "your" / filename;
Represents a Unicode character string.
Definition: AString.h:37

Which would supplyValue into "path/to/your/file.txt"

Returns
path to child file relatively to this folder

◆ removeFile()

const APath & APath::removeFile ( ) const

Delete file. Relevant for empty folders and regular files.

Returns
this

◆ removeFileRecursive()

const APath & APath::removeFileRecursive ( ) const

Delete files recursively. Relevant for folders.

Returns
this

◆ systemSlashDirection()

AString APath::systemSlashDirection ( ) const
Returns
On Linux/macOS, returns self copy. On Windows, returns self copy with backslashes () instead of slashes (/).

◆ touch()

const APath & APath::touch ( ) const

Creates a file.

Returns
this.

◆ workingDir()

APath APath::workingDir ( )
static
Returns
working dir of application

#include <AUI/IO/APath.h>


The documentation for this class was generated from the following files:
Inheritance diagram for APath:
Collaboration diagram for APath: