#include "cFile.h"
#include "cData.h"
cFile::cFile(){
iDescriptor = 0;
bEof = false;
sFileName = "";
}
cFile::~cFile(){
closeFile();
}
bool cFile::openFile( const std::string sInFileName, const int iMode){
if(isOpen())
return false;
if((iDescriptor = open(sInFileName.c_str(), iMode)) < 0){
iDescriptor = 0;
perror("file not open");
return false;
}
sFileName = sInFileName;
return true;
}
bool cFile::createFile( const std::string sInFileName, const int iMode){
if(isOpen())
return false;
if((iDescriptor = creat(sInFileName.c_str(), iMode)) < 0){
iDescriptor = 0;
perror("file not created");
return false;
}
sFileName = sInFileName;
return true;
}
void cFile::closeFile(void){
if(isOpen()){
close(iDescriptor);
iDescriptor = 0;
}
}
const unsigned long cFile::writeToFile(cData &aInData) const{
return write(iDescriptor, aInData.getData(), aInData.getLength());
}
const unsigned long cFile::writeToFile(const char iCharacter) const{
return write(iDescriptor, &iCharacter, 1);
}
const int cFile::readFromFile( char* sBuffer, const unsigned long iInLength){
unsigned long iLenght;
if (!bEof){
if ((iLenght = read(iDescriptor, sBuffer, iInLength)) == -1){
perror("Error reading from file descriptor");
return 0;
};
bEof = (bool) ((unsigned int) iLenght != iInLength);
return iLenght;
}
}
const unsigned long cFile::readFromFile(char& iCharacter){
return read(iDescriptor, &iCharacter, 1);
}
const std::string cFile::readString(const int iInLength){
char sChar[iInLength+1];
if (iDescriptor != 0){
read(iDescriptor, &sChar, iInLength);
sChar[iInLength+1] = '\0';
return sChar;
}
return "";
}