SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
Loading...
Searching...
No Matches
FS.cpp
Go to the documentation of this file.
1#include <sourcepp/FS.h>
2
3#include <filesystem>
4
5#include <FileStream.h>
6
7using namespace sourcepp;
8
9std::vector<std::byte> fs::readFileBuffer(const std::string& filepath, std::size_t startOffset) {
10 FileStream stream{filepath};
11 if (!stream) {
12 return {};
13 }
14 stream.seek_in_u(startOffset);
15 return stream.read_bytes(std::filesystem::file_size(filepath) - startOffset);
16}
17
18std::string fs::readFileText(const std::string& filepath, std::size_t startOffset) {
19 FileStream stream{filepath};
20 if (!stream) {
21 return {};
22 }
23 stream.seek_in_u(startOffset);
24 return stream.read_string();
25}
26
27bool fs::writeFileBuffer(const std::string& filepath, std::span<const std::byte> buffer) {
28 FileStream stream{filepath, FileStream::OPT_TRUNCATE | FileStream::OPT_CREATE_IF_NONEXISTENT};
29 if (!stream) {
30 return false;
31 }
32 stream.seek_out(0).write(buffer);
33 return true;
34}
35
36bool fs::writeFileText(const std::string& filepath, const std::string& text) {
37 FileStream stream{filepath, FileStream::OPT_TRUNCATE | FileStream::OPT_CREATE_IF_NONEXISTENT};
38 if (!stream) {
39 return false;
40 }
41 stream.seek_out(0).write(text, false);
42 return true;
43}
std::vector< std::byte > readFileBuffer(const std::string &filepath, std::size_t startOffset=0)
Definition: FS.cpp:9
std::string readFileText(const std::string &filepath, std::size_t startOffset=0)
Definition: FS.cpp:18
bool writeFileText(const std::string &filepath, const std::string &text)
Definition: FS.cpp:36
bool writeFileBuffer(const std::string &filepath, std::span< const std::byte > buffer)
Definition: FS.cpp:27
Definition: LZMA.h:11