48 lines
1004 B
C++
48 lines
1004 B
C++
#include "File.h"
|
|
#include "Exception.h"
|
|
|
|
namespace coreutils {
|
|
|
|
File::File(std::string fileName, int mode, int authority) {
|
|
|
|
this->fileName = fileName;
|
|
|
|
struct stat status;
|
|
stat(fileName.c_str(), &status);
|
|
|
|
buffer = NULL;
|
|
|
|
setBufferSize(status.st_size);
|
|
|
|
fd = open(fileName.c_str(), mode, authority);
|
|
if(fd < 0) {
|
|
std::stringstream temp;
|
|
temp << "Error opening file " << fileName << ".";
|
|
throw Exception(temp.str(), __FILE__, __LINE__);
|
|
}
|
|
}
|
|
|
|
File::~File() {
|
|
|
|
}
|
|
|
|
void File::setBufferSize(size_t size) {
|
|
buffer = (char *)realloc(buffer, size);
|
|
this->size = size;
|
|
}
|
|
|
|
void File::read() {
|
|
size = ::read(fd, buffer, size);
|
|
setBufferSize(size);
|
|
}
|
|
|
|
void File::write(std::string data) {
|
|
::write(fd, data.c_str(), data.length());
|
|
}
|
|
|
|
std::string File::asString() {
|
|
return std::string(buffer, size);
|
|
}
|
|
|
|
}
|