UtiLite  0.3.1
A lite utilities library
include/utilite/UFile.h
00001 /*
00002 *  utilite is a cross-platform library with
00003 *  useful utilities for fast and small developing.
00004 *  Copyright (C) 2010  Mathieu Labbe
00005 *
00006 *  utilite is free library: you can redistribute it and/or modify
00007 *  it under the terms of the GNU Lesser General Public License as published by
00008 *  the Free Software Foundation, either version 3 of the License, or
00009 *  (at your option) any later version.
00010 *
00011 *  utilite is distributed in the hope that it will be useful,
00012 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 *  GNU Lesser General Public License for more details.
00015 *
00016 *  You should have received a copy of the GNU Lesser General Public License
00017 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
00018 */
00019 
00020 #ifndef FILE_H
00021 #define FILE_H
00022 
00023 #include "utilite/UtiLiteExp.h" // DLL export/import defines
00024 
00025 #include "utilite/UDirectory.h"
00026 #include <string>
00027 
00033 class UTILITE_EXP UFile
00034 {
00035 public:
00041         static bool exists(const std::string &filePath);
00042 
00048         static long length(const std::string &filePath);
00049 
00055         static int erase(const std::string &filePath);
00056 
00063         static int rename(const std::string &oldFilePath,
00064                                                   const std::string &newFilePath);
00065 
00071         static std::string getName(const std::string & filePath);
00072 
00077         static std::string getExtension(const std::string &filePath);
00078 
00084         static void copy(const std::string & from, const std::string & to);
00085 
00086 public:
00091         UFile(const std::string & path) : path_(path) {}
00092         ~UFile() {}
00093 
00098         bool isValid() {return exists(path_);}
00099 
00104         bool exists() {return exists(path_);}
00105 
00110         long length() {return length(path_);}
00111 
00116         int rename(const std::string &newName)
00117         {
00118                 std::string ext = this->getExtension();
00119                 std::string newPath = UDirectory::getDir(path_) + std::string("/") + newName;
00120                 if(ext.size())
00121                 {
00122                         newPath += std::string(".") + getExtension(path_);
00123                 }
00124                 int result = rename(path_, newPath);
00125                 if(result == 0)
00126                 {
00127                         path_ = newPath;
00128                 }
00129                 return result;
00130         }
00135         std::string getName() {return getName(path_);}
00140         std::string getExtension() {return getExtension(path_);}
00141 
00146         void copy(const std::string & to) {copy(path_, to);}
00147 
00148 private:
00149         std::string path_;
00150 };
00151 
00152 #endif
 All Classes Files Functions Variables Enumerations Friends Defines