diff --git a/BaseLib/FileTools.cpp b/BaseLib/FileTools.cpp new file mode 100644 index 0000000000000000000000000000000000000000..16d0ee3d59cee03d6e03df0383700af3edc43fe9 --- /dev/null +++ b/BaseLib/FileTools.cpp @@ -0,0 +1,63 @@ +/** + * Copyright (c) 2012, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + * + * \file FileTools.cpp + * + * Created on 2010-04-26 by Lars Bilke + * + */ + +#include "FileTools.h" + +#include <sys/stat.h> + +namespace BaseLib +{ + +/** + * Returns true if given file exists. From http://www.techbytes.ca/techbyte103.html + */ +bool IsFileExisting(const std::string &strFilename) +{ + struct stat stFileInfo; + bool blnReturn; + int intStat; + + // Attempt to get the file attributes + intStat = stat(strFilename.c_str(),&stFileInfo); + + if(intStat == 0) + { + // We were able to get the file attributes + // so the file obviously exists. + blnReturn = true; + } + else + { + // We were not able to get the file attributes. + // This may mean that we don't have permission to + // access the folder which contains this file. If you + // need to do that level of checking, lookup the + // return values of stat which will give you + // more details on why stat failed. + blnReturn = false; + } + + return(blnReturn); +} + +/** + * \brief truncate a file + */ +void truncateFile( std::string const& filename) +{ + std::ofstream ofs(filename.c_str(), std::ios_base::trunc); + ofs.close(); +} + +} // end namespace BaseLib + diff --git a/BaseLib/FileTools.h b/BaseLib/FileTools.h index 831b2ce2893bb6f234b4481bb0f328dfa87ee56f..2858e11f79b48d177d77ebe1dcd8642e5d7b1f79 100644 --- a/BaseLib/FileTools.h +++ b/BaseLib/FileTools.h @@ -17,117 +17,35 @@ #include <string> #include <fstream> -#include <sys/stat.h> -namespace BaseLib { -/** - * Returns true if given file exists. From http://www.techbytes.ca/techbyte103.html - */ -static bool IsFileExisting(const std::string &strFilename) -{ - struct stat stFileInfo; - bool blnReturn; - int intStat; - - // Attempt to get the file attributes - intStat = stat(strFilename.c_str(),&stFileInfo); - - if(intStat == 0) - { - // We were able to get the file attributes - // so the file obviously exists. - blnReturn = true; - } - else - { - // We were not able to get the file attributes. - // This may mean that we don't have permission to - // access the folder which contains this file. If you - // need to do that level of checking, lookup the - // return values of stat which will give you - // more details on why stat failed. - blnReturn = false; - } - - return(blnReturn); -} - -/** - * \brief return a directory path - */ -static std::string getFileDirecotryPath(const std::string &file_path) +namespace BaseLib { - std::size_t indexChWin, indexChLinux; - indexChWin = indexChLinux = 0; - indexChWin = file_path.find_last_of('\\'); - indexChLinux = file_path.find_last_of('/'); - // - std::string dir_path; - if(indexChWin != std::string::npos) - dir_path = file_path.substr(0,indexChWin); // + "\\"; - else if(indexChLinux != std::string::npos) - dir_path = file_path.substr(0,indexChLinux); // + "/"; - - return dir_path; -} /** - * \brief return a file base name + * \brief Returns true if given file exists. From http://www.techbytes.ca/techbyte103.html + * + * \param strFilename the file name */ -static std::string getFileBaseName(const std::string &file_path) -{ - std::size_t indexChWin, indexChLinux; - indexChWin = indexChLinux = 0; - indexChWin = file_path.find_last_of('\\'); - indexChLinux = file_path.find_last_of('/'); - // - std::string dir_path; - if(indexChWin != std::string::npos) - dir_path = file_path.substr(indexChWin+1, file_path.length()); - else if(indexChLinux != std::string::npos) - dir_path = file_path.substr(indexChLinux+1, file_path.length()); - else - dir_path = file_path; - - return dir_path; -} - -/** - * \brief return a file name with or without file extensions - */ -static std::string getFileNameFromPath(const std::string &str, bool with_extension) -{ - std::string::size_type beg1 = str.find_last_of('/'); - std::string::size_type beg2 = str.find_last_of('\\'); - std::string::size_type beg; - if (beg1 == std::string::npos && beg2 == std::string::npos) beg = -1; - else if (beg1 == std::string::npos) beg = beg2; - else if (beg2 == std::string::npos) beg = beg1; - else beg = (beg1<beg2) ? beg2 : beg1; - std::string file ( str.substr(beg+1) ); - if (with_extension) return file; - // cut extension - std::string::size_type end = file.find_last_of('.'); - return file.substr(0,end); -} +bool IsFileExisting(const std::string &strFilename); /** - * \brief write value in binary + * \brief write value as binary into the given output stream + * + * \tparam T data type of the value + * \param out output stream + * \param val value */ -template <typename T> void write_value_binary(std::fstream &fin, T val) +template <typename T> void writeValueBinary(std::ostream &out, T const& val) { - fin.write((const char*)&val, sizeof(T)); + out.write((const char*)&val, sizeof(T)); } /** * \brief truncate a file + * + * \param file_path the file name */ -static void truncateFile(const std::string &filename) -{ - std::ofstream ofs; - ofs.open(filename.c_str(), std::ios_base::trunc); - ofs.close(); -} +void truncateFile( std::string const& file_path); } // end namespace BaseLib