acl
3.5.3.0
fstream.hpp
浏览该文件的文档.
1
#pragma once
2
#include "../acl_cpp_define.hpp"
3
#include "
istream.hpp
"
4
#include "
ostream.hpp
"
5
6
namespace
acl
{
7
8
class
string;
9
10
class
ACL_CPP_API
fstream
11
:
public
istream
12
,
public
ostream
13
{
14
public
:
15
fstream
(
void
);
16
virtual
~
fstream
(
void
);
17
18
/**
19
* 根据文件路径打开文件流, 这是最基础的打开文件的方式
20
* @param path {const char*} 文件名
21
* @param oflags {unsigned int} 标志位, We're assuming that
22
* O_RDONLY: 0x0000, O_WRONLY: 0x0001, O_RDWR: 0x0002,
23
* O_APPEND: 0x0008, O_CREAT: 0x0100, O_TRUNC: 0x0200,
24
* O_EXCL: 0x0400; just for win32, O_TEXT: 0x4000,
25
* O_BINARY: 0x8000, O_RAW: O_BINARY, O_SEQUENTIAL: 0x0020,
26
* O_RANDOM: 0x0010.
27
* @param mode {int} 打开文件句柄时的模式(如: 0600)
28
* @return {bool} 打开文件是否成功
29
*/
30
bool
open(
const
char
* path,
unsigned
int
oflags,
int
mode);
31
32
/**
33
* 以读/写方式打开文件流,当文件不存在时则创建新文件,当文件存在时则
34
* 将文件清空, 文件属性为 0700
35
* @param path {const char*} 文件名
36
* @return {bool} 打开文件是否成功
37
*/
38
bool
open_trunc(
const
char
* path);
39
40
/**
41
* 以读/写方式建新文件,文件属性为 0700, 若文件不存在则创建新文件,
42
* 若存在则打开旧文件
43
* @return {bool} 文件创建是否成功
44
*/
45
bool
create(
const
char
* path);
46
47
/**
48
* 将本类对象对应的文件从磁盘上删除,该函数只有当内部知道文件路径
49
* 时才能正确删除文件,否则无法删除
50
* @return {bool} 删除文件是否成功
51
*/
52
bool
remove(
void
);
53
54
/**
55
* 将当前文件重命名为指定文件名,针对 WINDOWS 平台,需要先关闭当前文件
56
* 句柄,当重命名成功后再重新打开新的目标文件
57
* @param from_path {const char*} 源文件名
58
* @param to_path {const char*} 目标文件名
59
* @return {bool} 命名是否成功
60
*/
61
bool
rename(
const
char
* from_path,
const
char
* to_path);
62
63
#if defined(_WIN32) || defined(_WIN64)
64
/**
65
* 根据系统的文件句柄打开 fstream 文件流对象
66
* @param fh 系统文件句柄
67
* @param oflags 打开标志位
68
* @param path {const char*} 非 NULL 时当被作为该文件句柄的文件路径
69
* 来存储,以便于 file_path, remove 使用
70
*/
71
void
open(
void
* fh,
unsigned
int
oflags,
const
char
* path = NULL);
72
73
/**
74
* 移动文件指针位置
75
* @param offset {__int64} 偏移量
76
* @param whence {int} 移动方向:SEEK_SET(从文件起始位置后移动),
77
* SEEK_CUR(从当前文件指针位置向后移动), SEEK_END(从文件尾向前移动)
78
* @return {acl_off_t} 正常时返回值 >= 0,出错时返回 -1
79
*/
80
__int64 fseek(__int64 offset,
int
whence);
81
82
/**
83
* 获得当前系统文件指针在文件中的偏移位置
84
* @return {acl_off_t} 正常时返回值 >= 0,出错时返回 -1
85
*/
86
__int64 ftell(
void
);
87
88
/**
89
* 将文件尺寸截断至指定大小
90
* @param length {acl_off_t} 文件截断后的大小尺寸
91
* @return {bool} 是否成功
92
*/
93
bool
ftruncate(__int64 length);
94
95
/**
96
* 获得当前文件的大小
97
* @return {acl_off_t} 正常时返回值 >= 0,出错返回 -1
98
*/
99
__int64 fsize(
void
)
const
;
100
101
/**
102
* 静态方法用于获取指定文件的文件大小
103
* @param path {const char*} 非空字符串指定文件路径
104
* @return {__int64} 正常时返回值 >= 0,出错时返回 -1
105
*/
106
static
__int64 fsize(
const
char
* path);
107
108
/**
109
* 返回系统文件句柄
110
* @return 系统文件句柄,出错时返回 ACL_FILE_INVALID
111
*/
112
void
* file_handle(
void
)
const
;
113
#else
114
void
open(
int
fh,
unsigned
int
oflags,
const
char
* path = NULL);
115
long
long
int
fseek(
long
long
int
offset,
int
whence);
116
long
long
int
ftell(
void
);
117
bool
ftruncate(
long
long
int
length);
118
long
long
int
fsize(
void
)
const
;
119
static
long
long
int
fsize(
const
char
* path);
120
int
file_handle(
void
)
const
;
121
#endif
122
/**
123
* 获得文件的全路径
124
* @return {const char*} 若返回空则表示文件还未打开或出错
125
*/
126
const
char
* file_path(
void
)
const
;
127
128
/**
129
* 当文件打开后,该方法用来对文件加锁
130
* @param exclude {bool} 加锁方式是否是独占锁,默认是独占锁,如果该值
131
* 为 false, 则为共享锁
132
* @return {bool} 返回 false 表示加锁失败,可通过 acl::last_serror 查看
133
* 出错原因
134
*/
135
bool
lock(
bool
exclude =
true
);
136
137
/**
138
* 当文件打开后,该方法用来尝试对文件加锁,如果加锁成功则返回 true,如
139
* 果该文件已经被其它进程加锁,则返回 false
140
* @param exclude {bool} 加锁方式是否是独占锁,默认是独占锁,如果该值
141
* 为 false, 则为共享锁
142
* @return {bool} 返回 false 表示加锁失败,可通过 acl::last_serror 查看
143
* 出错原因
144
*/
145
bool
try_lock(
bool
exclude =
true
);
146
147
/**
148
* 当调用 lock 或 try_lock 成功后可以调用本方法对文件解锁
149
* @return {bool} 解锁是否成功
150
*/
151
bool
unlock(
void
);
152
};
153
154
}
// namespace acl
acl::istream
Definition:
istream.hpp:15
acl
Definition:
acl_cpp_init.hpp:4
acl::ostream
Definition:
ostream.hpp:17
ostream.hpp
ACL_CPP_API
#define ACL_CPP_API
Definition:
acl_cpp_define.hpp:16
istream.hpp
acl::fstream
Definition:
fstream.hpp:10
include
acl_cpp
stream
fstream.hpp
生成于 2021年 九月 10日 星期五 11:14:45 , 为 acl使用
1.8.15