12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #include "FileStream.h"
- using namespace bell;
- FileStream::FileStream(const std::string& path, std::string read)
- {
- file = fopen(path.c_str(), "rb");
- if (file == NULL)
- {
- throw std::runtime_error("Could not open file: " + path);
- }
- }
- FileStream::~FileStream()
- {
- close();
- }
- size_t FileStream::read(uint8_t *buf, size_t nbytes)
- {
- if (file == NULL)
- {
- throw std::runtime_error("Stream is closed");
- }
- return fread(buf, 1, nbytes, file);
- }
- size_t FileStream::skip(size_t nbytes)
- {
- if (file == NULL)
- {
- throw std::runtime_error("Stream is closed");
- }
- return fseek(file, nbytes, SEEK_CUR);
- }
- size_t FileStream::position()
- {
- if (file == NULL)
- {
- throw std::runtime_error("Stream is closed");
- }
- return ftell(file);
- }
- size_t FileStream::size()
- {
- if (file == NULL)
- {
- throw std::runtime_error("Stream is closed");
- }
- size_t pos = ftell(file);
- fseek(file, 0, SEEK_END);
- size_t size = ftell(file);
- fseek(file, pos, SEEK_SET);
- return size;
- }
- void FileStream::close()
- {
- if (file != NULL)
- {
- fclose(file);
- file = NULL;
- }
- }
|