summaryrefslogtreecommitdiffhomepage
path: root/libcommon/file.cpp
diff options
context:
space:
mode:
authorRoland Reichwein <mail@reichwein.it>2020-05-11 12:24:04 +0200
committerRoland Reichwein <mail@reichwein.it>2020-05-11 12:24:04 +0200
commit5bc1f7bed536e0e936fd13fad45c49392b0bfff4 (patch)
tree67d4b63e38c6799d63ae4f78168d6838c4e13906 /libcommon/file.cpp
parent2715d8e5910304d89a5a1666726aac3b777ad16c (diff)
Separated out routines to libcommon
Diffstat (limited to 'libcommon/file.cpp')
-rw-r--r--libcommon/file.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/libcommon/file.cpp b/libcommon/file.cpp
new file mode 100644
index 0000000..47ab8be
--- /dev/null
+++ b/libcommon/file.cpp
@@ -0,0 +1,46 @@
+#include "file.h"
+
+#include <fstream>
+
+namespace fs = std::filesystem;
+
+using namespace std::string_literals;
+
+std::string File::getFile(const fs::path& filename)
+{
+ std::ifstream file(filename.string(), std::ios::in | std::ios::binary | std::ios::ate);
+
+ if (file.is_open()) {
+ std::ifstream::pos_type fileSize = file.tellg();
+ file.seekg(0, std::ios::beg);
+
+ std::string bytes(fileSize, ' ');
+ file.read(reinterpret_cast<char*>(bytes.data()), fileSize);
+
+ return bytes;
+
+ } else {
+ throw std::runtime_error("Opening "s + filename.string() + " for reading");
+ }
+}
+
+void File::setFile(const fs::path& filename, const std::string& s)
+{
+ File::setFile(filename, s.data(), s.size());
+}
+
+void File::setFile(const fs::path& filename, const char* data, size_t size)
+{
+ std::ofstream file(filename.string(), std::ios::out | std::ios::binary);
+ if (file.is_open()) {
+ file.write(data, size);
+ } else {
+ throw std::runtime_error("Opening "s + filename.string() + " for writing");
+ }
+}
+
+void File::setFile(const fs::path& filename, const std::vector<uint8_t>& data)
+{
+ File::setFile(filename, reinterpret_cast<const char*>(data.data()), data.size());
+}
+