libfilezilla
file.hpp
Go to the documentation of this file.
1 #ifndef LIBFILEZILLA_FILE_HEADER
2 #define LIBFILEZILLA_FILE_HEADER
3 
4 #include "libfilezilla.hpp"
5 
6 #ifdef FZ_WINDOWS
7 #include "private/windows.hpp"
8 #endif
9 
14 #include <stdint.h>
15 
16 namespace fz {
17 
25 class FZ_PUBLIC_SYMBOL file final
26 {
27 public:
29  enum mode {
30  reading,
31  writing
32  };
33 
42  existing = 0x1,
43 
45  empty = 0x2,
46 
53  current_user_only = 0x4
54  };
55 
56  file() = default;
57  file(native_string const& f, mode m, creation_flags d = existing);
58 
59  ~file();
60 
61  file(file const&) = delete;
62  file& operator=(file const&) = delete;
63 
64  bool opened() const;
65 
66  bool open(native_string const& f, mode m, creation_flags d = existing);
67 
68  void close();
69 
71  enum seek_mode {
74 
77 
79  end
80  };
81 
85  int64_t size() const;
86 
99  int64_t seek(int64_t offset, seek_mode m);
100 
102  int64_t position() { return seek(0, current); }
103 
109  bool truncate();
110 
124  int64_t read(void *buf, int64_t count);
125 
136  int64_t write(void const* buf, int64_t count);
137 
143  bool fsync();
144 
145 private:
146 #ifdef FZ_WINDOWS
147  HANDLE hFile_{INVALID_HANDLE_VALUE};
148 #else
149  int fd_{-1};
150 #endif
151 };
152 
157 bool FZ_PUBLIC_SYMBOL remove_file(native_string const& name);
158 
160  return static_cast<file::creation_flags>(static_cast<unsigned int>(lhs) | rhs);
161 }
162 
163 }
164 #endif
Lean class for file access.
Definition: file.hpp:26
mode
Files can be opened for reading or writing, but not both.
Definition: file.hpp:29
creation_flags
Creation flags when opening file for writing.
Definition: file.hpp:40
int64_t seek(int64_t offset, seek_mode m)
Relative seek based on seek mode.
int64_t write(void const *buf, int64_t count)
Write data to file.
int64_t read(void *buf, int64_t count)
Read data from file.
bool truncate()
Truncate the file to the current position of the file pointer.
int64_t size() const
Gets size of file.
seek_mode
Used by seek.
Definition: file.hpp:71
@ begin
Seek from beginning of file.
Definition: file.hpp:73
@ current
Seek from current position in the file.
Definition: file.hpp:76
int64_t position()
Get Current position in file.
Definition: file.hpp:102
bool fsync()
Ensure data is flushed to disk.
Sets some global macros and further includes string.hpp.
The namespace used by libfilezilla.
Definition: apply.hpp:17
bool remove_file(native_string const &name)
remove the specified file.
std::wstring native_string
A string in the system's native character type and encoding. Note: This typedef changes depending on...
Definition: string.hpp:33