This is an old revision of the document!
Warning: Declaration of syntax_plugin_iframe::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /var/www/html/terralib5/wiki/lib/plugins/iframe/syntax.php on line 18
Warning: Declaration of syntax_plugin_iframe::render($mode, &$R, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /var/www/html/terralib5/wiki/lib/plugins/iframe/syntax.php on line 18
Warning: Declaration of syntax_plugin_externallink::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /var/www/html/terralib5/wiki/lib/plugins/externallink/syntax.php on line 107
Warning: Declaration of syntax_plugin_externallink::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /var/www/html/terralib5/wiki/lib/plugins/externallink/syntax.php on line 107
Table of Contents
TerraLib.Core: FileSystem
The class te::core::FileSystem provides support for system paths using UTF-8 strings, performing the encoding conversion using the te::core::CharEncoding class and using the Boost.FileSystem functions.
API
C++
The API for system paths in TerraLib is defined by FileSystem class, shown below:
namespace te { namespace core { /*! \class FileSystem \brief A class for handling system files and paths using UTF-8 strings. */ class FileSystem { public: /*! \brief Retrives the current working directory path in UTF-8. \return String in UTF-8 for the current working directory path. */ static std::string currentPath(); /*! \brief Composes an absolute path for the given path in UTF-8. \param path Path in UTF-8. \return String in UTF-8 for the composed path. */ static std::string systemCompletePath(const std::string& path); /*! \brief Retrives the temp directory in UTF-8. \return String in UTF-8 for temp directory. */ static std::string tempDirectoryPath(); /*! \brief Retrives an unique path generated by a given format. \param format The format used to create a unique path. e.g.: "%%%%-%%%%-%%%%-%%%%" \return String in UTF-8 for the generated unique path. */ static std::string uniquePath( const std::string& format = "%%%%-%%%%-%%%%-%%%%"); /*! \brief Retrives the absolute path for the given path in UTF-8. \param path Path in UTF-8. \return String in UTF-8 for the absolute path. */ static std::string absolutePath(const std::string& path); /*! \brief Retrives the extension of a given file path in UTF-8. \param path File path in UTF-8. \return String in UTF-8 for the extension. */ static std::string extension(const std::string& path); /*! \brief Checks if a given path in UTF-8 is a directory. \param path Path in UTF-8. \return true if is a directory, otherwise false. */ static bool isDirectory(const std::string& path); /*! \brief Checks if a given path in UTF-8 is an empty directory. \param path Path in UTF-8. \return true if is a empty directory, otherwise false. */ static bool isEmpty(const std::string& path); /*! \brief Checks if a given path in UTF-8 is a regular file. \param path File path in UTF-8. \return true if is a regular file, otherwise false. */ static bool isRegularFile(const std::string& path); /*! \brief Checks if a given path in UTF-8 exists. \param path Path in UTF-8. \return true if exists, otherwise false. */ static bool exists(const std::string& path); /*! \brief Creates a directory from a given path in UTF-8. \param path Path in UTF-8. \return true if a new directory was created, otherwise false. */ static bool createDirectory(const std::string& path); /*! \brief Creates a directory for any element of path that does not exist. \param path Path in UTF-8. \return true if a new directory was created, otherwise false. */ static bool createDirectories(const std::string& path); /*! \brief Copies a file \param from Path in UTF-8 for the file to be copied. \param to Path in UTF-8 for the copy output. */ static void copyFile(const std::string& from, const std::string& to); /*! \brief Removes a file or directory from a given path in UTF-8. \note This function will not remove if the directory is not empty. \param path Path in UTF-8. \return false if path did not exist in the first place, otherwise true. */ static bool remove(const std::string& path); /*! \brief Renames a file or directory from a given path in UTF-8. \param old_p Old name in UTF-8. \param new_p New name in UTF-8. */ static void rename(const std::string& old_p, const std::string& new_p); /*! \brief Lists a directory from a given path in UTF-8. \param path Path in UTF-8. \return Vector of strings in UTF-8 for directory content. */ static std::vector<std::string> listDirectory(const std::string& path); }; } // end namespace core } // end namespace te
Examples
Here is a simple example using the functions provided by FileSystem class:
// STL #include <string> #include <fstream> #include <cstdlib> #include <iostream> // TerraLib #include <terralib/core/encoding/CharEncoding.h> #include <terralib/core/filesystem/FileSystem.h> int main(int argc, char *argv[]) { /* Initialize an utf8 string with a path */ std::string utf8_path = te::core::CharEncoding::toUTF8("../example/filesystem"); /* Create a directory and make some verifications about the path */ if (te::core::FileSystem::createDirectory(utf8_path)) std::cout << "Directory created!" << std::endl; if (te::core::FileSystem::exists(utf8_path)) std::cout << "Path exists!" << std::endl; if(te::core::FileSystem::isDirectory(utf8_path)) std::cout << "Path is a directory!" << std::endl; if(te::core::FileSystem::isEmpty(utf8_path)) std::cout << "Path is empty!" << std::endl; /* Creating files to test some functions */ std::string file1_str = utf8_path + "/file1.txt", file2_str = utf8_path + "/file2.sh", file3_str = utf8_path + "/file3.txt"; std::ofstream file1(file1_str); std::ofstream file2(file2_str); file1.close(); file2.close(); /* Return the file extension */ std::string stringTxt = te::core::FileSystem::extension(file1_str); std::cout << "File1 has extension: " << stringTxt << std::endl; std::string stringSh = te::core::FileSystem::extension(file2_str); std::cout << "File1 has extension: " << stringSh << std::endl; /* Rename and copy files */ te::core::FileSystem::rename(file1_str, file3_str); te::core::FileSystem::copyFile(file3_str, file1_str); /* Check if is a regular file */ if (te::core::FileSystem::isRegularFile(file3_str)) std::cout << "File3 is a regular file!" << std::endl; /* Create a list with the files in directory, check the list size and remove * the files */ std::vector<std::string> files = te::core::FileSystem::listDirectory(utf8_path); std::cout << "Files size is " << files.size() << std::endl; for(size_t i = 0; i < files.size(); ++i) te::core::FileSystem::remove(files[i]); if (te::core::FileSystem::remove(utf8_path)) std::cout << "utf8 path was removed!" << std::endl; }