// A utilitarian class to handle file operations in my C++ projects. #ifndef MARSTR_FILEIO #define MARSTR_FILEIO #include #include #include #include #include #include #include #include #include #include #include #include namespace marstr { class fileio { public: // The file to write out to std::ofstream out; // The file to read in from std::ifstream in; // Check if a file exists prior to opening it or writing to it bool doesFileExist(std::string filename); // Check if a folder exists bool doesFolderExist(std::string fldname); // Create a folder void mkdir(std::string fldname); // Compresses a file void compressFile(std::string source, std::string dest); // Decompresses a file void decompressFile(std::string source, std::string dest); // Open a binary file for writing void openFileForWriting(std::string fn); // Open a binary file for reading void openFileForReading(std::string fn); // Reads a plain text file back to back and provides everything in a // std::string object std::string readPlainText(std::string fn); // Jumps to the specified position in the file opened for reading. We mostly // use this to quickly jump to positions in an octree file and read only // what is needed for rendering. void jumpToPositionInFile(int seekpos); // Jumps back to the very beginning of the file void jumpToBeginningOfFile(); // Close the file to write void closeFileForWriting(); // And for reading void closeFileForReading(); // Writes all kinds of things we need void writeShort(short s); void writeInt(int i); void writeUInt(unsigned int i); void writeLong(long l); void writeULong(unsigned long l); void writeFloat(float f); void writeDouble(double d); void writeString(std::string str); void writeStringAsPlainText(std::string str); void writeBinary(unsigned char c); // Reads back the same data types short readShort(); unsigned short readUShort(); int readInt(); unsigned int readUInt(); long readLong(); unsigned long readULong(); float readFloat(); double readDouble(); std::string readString(); // Deletes the specified file void deleteFile(std::string filename); // Get current position in file stream int CurrentStreamPosition(); }; } #endif