NX 1.0.3
niu2x's base c++ helper library
载入中...
搜索中...
未找到
file_system.h
浏览该文件的文档.
1#pragma once
2
3#include <nx/type.h>
4
8namespace nx::file_system {
9
17NX_API bool is_directory(const String& path);
18
26NX_API bool is_file(const String& path);
27
35NX_API bool exists(const String& path);
36
37NX_API bool make_dirs(const String& path);
38
39NX_API String relative_path(const String& path, const String& base);
40
41NX_API Vector<String> list_dir(const String& path);
42
50NX_API String get_parent_path(const String& path);
51
52NX_API String join_path(const String& dir, const String& path);
53
54NX_API extern const char path_separator;
55
63NX_API String get_file_name(const String& path);
64
65class NX_API File : public Read, public Write, private Uncopyable {
66public:
67 explicit File(const String& p);
68
69 File(const String& p, FILE* file, OpenMode m);
71
72 static File& in();
73 static File& out();
74 static File& err();
75
76 void close();
77
78 bool open(OpenMode mode);
79 bool open_read() { return open(OpenMode::READ); }
80 bool open_write() { return open(OpenMode::WRITE); }
81
82 const Optional<OpenMode>& get_mode() const { return mode_; }
83
84 ReadResult read(void* buffer, size_t bytes) override;
85 WriteResult write(const void* buffer, size_t bytes) override;
86
87private:
88 String path_;
90 FILE* fp_;
91 bool strong_ref_;
92};
93
100NX_API File& in();
101
107NX_API File& out();
108
114NX_API File& err();
115
116NX_API ReadAllResult read_file(const String& path);
117
118class NX_API Archive {
119public:
120 virtual ~Archive() = 0;
121 virtual Vector<String> list_dir(const String& path) = 0;
122 virtual UniquePtr<Read> open(const String& path) = 0;
123};
124
125// dir:///
126// zip:///
129 size_t len);
130
131using GlobCallback = Function<void(const String& path)>;
132NX_API void glob(const String& directory,
133 const String& glob_pattern,
134 GlobCallback callback);
135NX_API List<String> glob(const String& directory, const String& glob_pattern);
136}
Definition type.h:127
用于被private继承, 子类将不可被Copy
Definition type.h:75
Definition type.h:140
Definition file_system.h:118
virtual Vector< String > list_dir(const String &path)=0
virtual UniquePtr< Read > open(const String &path)=0
Definition file_system.h:65
bool open(OpenMode mode)
const Optional< OpenMode > & get_mode() const
Definition file_system.h:82
static File & out()
bool open_read()
Definition file_system.h:79
static File & err()
static File & in()
bool open_write()
Definition file_system.h:80
ReadResult read(void *buffer, size_t bytes) override
File(const String &p, FILE *file, OpenMode m)
File(const String &p)
WriteResult write(const void *buffer, size_t bytes) override
file_system namespace
Definition file_system.h:8
NX_API String get_parent_path(const String &path)
Gets the parent path.
NX_API bool exists(const String &path)
Determines whether the specified file exist
NX_API File & out()
get stdout file
NX_API void glob(const String &directory, const String &glob_pattern, GlobCallback callback)
NX_API bool is_directory(const String &path)
Determines whether the specified path is directory.
NX_API File & err()
get stderr file
NX_API bool make_dirs(const String &path)
NX_API UniquePtr< Archive > create_zip_archive_from_memory(const void *buf, size_t len)
NX_API String join_path(const String &dir, const String &path)
NX_API File & in()
get stdin file
NX_API bool is_file(const String &path)
Determines whether the specified path is file.
NX_API ReadAllResult read_file(const String &path)
NX_API const char path_separator
NX_API Vector< String > list_dir(const String &path)
NX_API UniquePtr< Archive > create_archive(const String &file_uri)
Function< void(const String &path)> GlobCallback
Definition file_system.h:131
NX_API String get_file_name(const String &path)
Gets the file name.
NX_API String relative_path(const String &path, const String &base)
std::list< T > List
Definition type.h:70
OpenMode
Open Mode
Definition type.h:95
std::optional< T > Optional
Definition type.h:44
Variant< IO_Error, ByteBuffer > ReadAllResult
Definition type.h:125
std::string String
Definition type.h:52
std::unique_ptr< T > UniquePtr
Definition type.h:58
std::function< T > Function
Definition type.h:67
Variant< IO_Error, EndOfFile, IO_Success > ReadResult
Result of a read operation
Definition type.h:124
Variant< IO_Error, IO_Success > WriteResult
Result of a write operation
Definition type.h:138
std::vector< T > Vector
Definition type.h:47