Main MRPT website > C++ reference for MRPT 1.4.0
filesystem.h
Go to the documentation of this file.
1/* +---------------------------------------------------------------------------+
2 | Mobile Robot Programming Toolkit (MRPT) |
3 | http://www.mrpt.org/ |
4 | |
5 | Copyright (c) 2005-2016, Individual contributors, see AUTHORS file |
6 | See: http://www.mrpt.org/Authors - All rights reserved. |
7 | Released under BSD License. See details in http://www.mrpt.org/License |
8 +---------------------------------------------------------------------------+ */
9#ifndef MRPT_FILESYSTEM_H
10#define MRPT_FILESYSTEM_H
11
12#include <mrpt/config.h>
16#include <string>
17
18namespace mrpt
19{
20 namespace system
21 {
22 /** @defgroup filesystem Directories, files, and file names (in #include <mrpt/system/filesystem.h>)
23 * \ingroup mrpt_base_grp
24 * @{ */
25
26 /** Returns the name of a proposed temporary file name */
28
29 /** Returns the current working directory.
30 */
31 std::string BASE_IMPEXP getcwd();
32
33 /** Creates a directory
34 * \return Returns false on any error, true on directory created or already existed.
35 */
36 bool BASE_IMPEXP createDirectory( const std::string &dirName );
37
38 /** Deletes a single file. For multiple files see deleteFiles
39 * \return Returns false on any error, true on everything OK.
40 * \sa deleteFiles
41 */
42 bool BASE_IMPEXP deleteFile( const std::string &fileName );
43
44 /** Delete one or more files, especified by the (optional) path and the file name (including '?' or '*') - Use forward slash ('/') for directories for compatibility between Windows and Linux, since they will be internally traslated into backward slashes ('\') if MRPT is compiled under Windows.
45 * \sa deleteFile
46 */
47 void BASE_IMPEXP deleteFiles(const std::string &s);
48
49 /** Renames a file - If the target path is different and the filesystem allows it, it will be moved to the new location.
50 * \return false on any error. In that case, if a pointer to a receiver string is passed in error_msg, a description of the error is saved there.
51 */
52 bool BASE_IMPEXP renameFile( const std::string &oldFileName, const std::string &newFileName, std::string *error_msg=NULL );
53
54 /** Delete all the files in a given directory (nothing done if directory does not exists, or path is a file).
55 * \sa deleteFile
56 * \return true on success
57 */
58 bool BASE_IMPEXP deleteFilesInDirectory(const std::string &s, bool deleteDirectoryAsWell = false );
59
60 /** Extract just the name (without extension) of a filename from a complete path plus name plus extension.
61 * This function works for either "/" or "\" directory separators.
62 * \sa extractFileExtension,extractFileDirectory
63 */
64 std::string BASE_IMPEXP extractFileName(const std::string& filePath);
65
66 /** Extract the extension of a filename.
67 * For example, for "dummy.cpp", it will return "cpp".
68 * If "ignore_gz" is true, the second extension will be returned if the file name
69 * ends in ".gz", for example, for "foo.map.gz", this will return "map".
70 * \sa extractFileName,extractFileDirectory
71 */
72 std::string BASE_IMPEXP extractFileExtension(const std::string &filePath, bool ignore_gz = false );
73
74 /** Extract the whole path (the directory) of a filename from a complete path plus name plus extension.
75 * This function works for either "/" or "\" directory separators.
76 * \sa extractFileName,extractFileExtension
77 */
78 std::string BASE_IMPEXP extractFileDirectory(const std::string &filePath);
79
80 /** Test if a given file (or directory) exists.
81 * \sa directoryExists
82 */
83 bool BASE_IMPEXP fileExists(const std::string& fileName);
84
85 /** Test if a given directory exists (it fails if the given path refers to an existing file).
86 * \sa fileExists
87 */
88 bool BASE_IMPEXP directoryExists(const std::string& fileName);
89
90 /** Replace invalid filename chars by underscores ('_').
91 * Invalid chars are identified by those not being alphanumeric or: ".-#%$&()+[]{}"
92 */
93 std::string BASE_IMPEXP fileNameStripInvalidChars( const std::string &filename);
94
95 /** Replace the filename extension by another one.
96 * Example:
97 * \code
98 * fileNameChangeExtension("cool.txt","bar") // -> "cool.bar"
99 * \endcode
100 */
101 std::string BASE_IMPEXP fileNameChangeExtension( const std::string &filename, const std::string &newExtension );
102
103 /** Return the size of the given file, or size_t(-1) if some error is found accessing that file. */
104 uint64_t BASE_IMPEXP getFileSize(const std::string &fileName);
105
106 /** Return the time of the file last modification, or "0" if the file doesn't exist. */
107 time_t BASE_IMPEXP getFileModificationTime(const std::string &filename);
108
109 /** Windows: replace all '/'->'\' , in Linux/MacOS: replace all '\'->'/' */
110 std::string BASE_IMPEXP filePathSeparatorsToNative(const std::string & filePath);
111
112 /** Copies file \a sourceFile to \a targetFile. If the target file exists, it will be overwritten.
113 * If the target file cannot be overwritten, the function first tries to change its permissions/attributes and retries opening it for write.
114 *
115 * \note Only for Windows: After a successful copy, if \a copyAttribs is true, the attributes of the source file are also copied. Note that not all
116 * attributes can be copied: http://msdn2.microsoft.com/en-us/library/aa365535.aspx
117 *
118 * \return true on success, false on any error, whose description can be optionally get in outErrStr
119 */
121 const std::string &sourceFile,
122 const std::string &targetFile,
123 std::string *outErrStr = NULL,
124 bool copyAttribs = true );
125
126 /** @} */
127 } // End of namespace
128
129} // End of namespace
130
131#endif
bool BASE_IMPEXP deleteFilesInDirectory(const std::string &s, bool deleteDirectoryAsWell=false)
Delete all the files in a given directory (nothing done if directory does not exists,...
bool BASE_IMPEXP directoryExists(const std::string &fileName)
Test if a given directory exists (it fails if the given path refers to an existing file).
std::string BASE_IMPEXP getcwd()
Returns the current working directory.
std::string BASE_IMPEXP extractFileDirectory(const std::string &filePath)
Extract the whole path (the directory) of a filename from a complete path plus name plus extension.
bool BASE_IMPEXP renameFile(const std::string &oldFileName, const std::string &newFileName, std::string *error_msg=NULL)
Renames a file - If the target path is different and the filesystem allows it, it will be moved to th...
time_t BASE_IMPEXP getFileModificationTime(const std::string &filename)
Return the time of the file last modification, or "0" if the file doesn't exist.
std::string BASE_IMPEXP fileNameStripInvalidChars(const std::string &filename)
Replace invalid filename chars by underscores ('_').
std::string BASE_IMPEXP fileNameChangeExtension(const std::string &filename, const std::string &newExtension)
Replace the filename extension by another one.
void BASE_IMPEXP deleteFiles(const std::string &s)
Delete one or more files, especified by the (optional) path and the file name (including '?...
bool BASE_IMPEXP copyFile(const std::string &sourceFile, const std::string &targetFile, std::string *outErrStr=NULL, bool copyAttribs=true)
Copies file sourceFile to targetFile.
uint64_t BASE_IMPEXP getFileSize(const std::string &fileName)
Return the size of the given file, or size_t(-1) if some error is found accessing that file.
std::string BASE_IMPEXP getTempFileName()
Returns the name of a proposed temporary file name.
std::string BASE_IMPEXP extractFileName(const std::string &filePath)
Extract just the name (without extension) of a filename from a complete path plus name plus extension...
bool BASE_IMPEXP deleteFile(const std::string &fileName)
Deletes a single file.
bool BASE_IMPEXP fileExists(const std::string &fileName)
Test if a given file (or directory) exists.
bool BASE_IMPEXP createDirectory(const std::string &dirName)
Creates a directory.
std::string BASE_IMPEXP filePathSeparatorsToNative(const std::string &filePath)
Windows: replace all '/'->'\' , in Linux/MacOS: replace all '\'->'/'.
std::string BASE_IMPEXP extractFileExtension(const std::string &filePath, bool ignore_gz=false)
Extract the extension of a filename.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.



Page generated by Doxygen 1.9.5 for MRPT 1.4.0 SVN: at Sun Nov 27 02:47:40 UTC 2022