diff options
Diffstat (limited to 'ZAPD/Utils/File.h')
| -rw-r--r-- | ZAPD/Utils/File.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/ZAPD/Utils/File.h b/ZAPD/Utils/File.h new file mode 100644 index 0000000..e3f8880 --- /dev/null +++ b/ZAPD/Utils/File.h @@ -0,0 +1,78 @@ +#pragma once + +#include <fstream> +#include <iostream> +#include <stdio.h> +#include <string> +#include <vector> +#include "Directory.h" +#include "Utils/StringHelper.h" + +class File +{ +public: + static bool Exists(const fs::path& filePath) + { + std::ifstream file(filePath, std::ios::in | std::ios::binary | std::ios::ate); + return file.good(); + } + + static std::vector<uint8_t> ReadAllBytes(const fs::path& filePath) + { + std::ifstream file(filePath, std::ios::in | std::ios::binary | std::ios::ate); + int32_t fileSize = (int32_t)file.tellg(); + file.seekg(0); + char* data = new char[fileSize]; + file.read(data, fileSize); + std::vector<uint8_t> result = std::vector<uint8_t>(data, data + fileSize); + delete[] data; + + return result; + }; + + static std::string ReadAllText(const fs::path& filePath) + { + std::ifstream file(filePath, std::ios::in | std::ios::binary | std::ios::ate); + int32_t fileSize = (int32_t)file.tellg(); + file.seekg(0); + char* data = new char[fileSize + 1]; + memset(data, 0, fileSize + 1); + file.read(data, fileSize); + std::string str = std::string((const char*)data); + delete[] data; + + return str; + }; + + static std::vector<std::string> ReadAllLines(const fs::path& filePath) + { + std::string text = ReadAllText(filePath); + std::vector<std::string> lines = StringHelper::Split(text, "\n"); + + return lines; + }; + + static void WriteAllBytes(const fs::path& filePath, const std::vector<uint8_t>& data) + { + std::ofstream file(filePath, std::ios::binary); + file.write((char*)data.data(), data.size()); + }; + + static void WriteAllBytes(const std::string& filePath, const std::vector<char>& data) + { + std::ofstream file(filePath, std::ios::binary); + file.write((char*)data.data(), data.size()); + }; + + static void WriteAllBytes(const std::string& filePath, const char* data, int dataSize) + { + std::ofstream file(filePath, std::ios::binary); + file.write((char*)data, dataSize); + }; + + static void WriteAllText(const fs::path& filePath, const std::string& text) + { + std::ofstream file(filePath, std::ios::out); + file.write(text.c_str(), text.size()); + } +}; |
