spo/ass2/FileDevice.cpp
2025-11-27 08:17:43 +01:00

44 lines
953 B
C++

#include "FileDevice.h"
#include <iostream>
FileDevice::FileDevice(const std::string& fname) : filename(fname) {
file.open(filename, std::ios::in | std::ios::out | std::ios::binary);
if (!file.is_open()) {
file.clear();
file.open(filename, std::ios::out | std::ios::binary);
file.close();
file.open(filename, std::ios::in | std::ios::out | std::ios::binary);
}
}
FileDevice::~FileDevice() {
if (file.is_open()) {
file.close();
}
}
bool FileDevice::test() const {
return file.is_open() && file.good();
}
uint8_t FileDevice::read() {
char c;
if (file.is_open()) {
if (file.get(c)) {
uint8_t byte = (uint8_t)c;
return byte;
} else {
return 0;
}
}
return 0;
}
void FileDevice::write(uint8_t value) {
if (file.is_open()) {
char c = (char)value;
file.put(c);
file.flush();
}
}