STTNet
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 宏定义 
Public 成员函数 | Protected 属性 | 静态 Protected 属性 | 所有成员列表
stt::file::File类 参考

读写磁盘文件的类 更多...

#include <sttnet.h>

类 stt::file::File 继承关系图:
stt::file::FileTool stt::file::LogFile

Public 成员函数

bool openFile (const std::string &fileName, const bool &create=true, const int &multiple=0, const size_t &size=0, const mode_t &mode=0666)
 打开文件 更多...
 
bool closeFile (const bool &del=false)
 关闭已打开了的文件 更多...
 
 ~File ()
 析构函数 更多...
 
bool isOpen ()
 判断对象是否打开了文件 更多...
 
bool isBinary ()
 判断对象是否以二进制模式打开文件 更多...
 
std::string getFileName ()
 获取打开的文件名字 更多...
 
uint64_t getFileLine ()
 获取打开的文件的行数 更多...
 
size_t getFileSize ()
 获取二进制打开的文件的大小 更多...
 
size_t getSize1 ()
 获取二进制打开的文件在内存中的大小 更多...
 
bool lockMemory ()
 把数据从磁盘读入内存 更多...
 
bool unlockMemory (const bool &rec=false)
 把数据从内存写入磁盘 更多...
 
操作内存中的数据的函数-文本模式
int findC (const std::string &targetString, const int linePos=1)
 查找行 更多...
 
bool appendLineC (const std::string &data, const int &linePos=0)
 插入行 更多...
 
bool deleteLineC (const int &linePos=0)
 删除行 更多...
 
bool deleteAllC ()
 删除全部 更多...
 
bool chgLineC (const std::string &data, const int &linePos=0)
 修改行 更多...
 
bool readLineC (std::string &data, const int linePos)
 读取单行 更多...
 
std::string & readC (std::string &data, const int &linePos, const int &num)
 读取行 更多...
 
std::string & readAllC (std::string &data)
 读取全部 更多...
 
操作内存中的数据的函数-二进制模式
bool readC (char *data, const size_t &pos, const size_t &size)
 读取数据块 更多...
 
bool writeC (const char *data, const size_t &pos, const size_t &size)
 写数据块 更多...
 
void formatC ()
 格式化数据 更多...
 
直接操作磁盘数据的函数-文本模式
int find (const std::string &targetString, const int linePos=1)
 查找行 更多...
 
bool appendLine (const std::string &data, const int &linePos=0)
 插入行 更多...
 
bool deleteLine (const int &linePos=0)
 删除行 更多...
 
bool deleteAll ()
 删除全部 更多...
 
bool chgLine (const std::string &data, const int &linePos=0)
 修改行 更多...
 
bool readLine (std::string &data, const int linePos)
 读取单行 更多...
 
std::string & read (std::string &data, const int &linePos, const int &num)
 读取行 更多...
 
std::string & readAll (std::string &data)
 读取全部 更多...
 
直接操作磁盘数据的函数-二进制模式
bool read (char *data, const size_t &pos, const size_t &size)
 读取数据块 更多...
 
bool write (const char *data, const size_t &pos, const size_t &size)
 写数据块 更多...
 
void format ()
 格式化数据 更多...
 

Protected 属性

std::mutex che
 

静态 Protected 属性

static std::mutex l1
 
static std::unordered_map
< std::string, FileThreadLock
fl2
 

详细描述

读写磁盘文件的类

注解
1、本类的同一个对象能确保同步性和线程安全
2、如果用本类的对象操作同一个文件也能保证同步性。但注意打开的时候统一这个文件的路径,要么用绝对路径,要么用相对路径。
3、这个类操作文件的时候有两种模式:1,读取磁盘+操作内存的数据+保存到磁盘;这三步分开做,适合自定义复杂操作的场景。 2,把三步操作合并成一步操作完成

构造及析构函数说明

stt::file::File::~File ( )
inline

析构函数

注解
默认对象生命周期结束时关闭文件,不删除文件。

成员函数说明

bool stt::file::File::appendLine ( const std::string &  data,
const int &  linePos = 0 
)

插入行

注解
1、在文件中插入一行
2、行数从1开始
参数
data需要插入的数据
linePos在指定行插入(默认从末尾插入)
返回
true 插入成功
false 插入失败
bool stt::file::File::appendLineC ( const std::string &  data,
const int &  linePos = 0 
)

插入行

注解
1、在文件导入内存的数据中插入一行
2、行数从1开始
参数
data需要插入的数据
linePos在指定行插入(默认从末尾插入)
返回
true 插入成功
false 插入失败
bool stt::file::File::chgLine ( const std::string &  data,
const int &  linePos = 0 
)

修改行

注解
1、修改文件中的一行
2、行数从1开始
参数
data覆盖到指定行的数据
linePos需要覆盖的行(默认最后一行)
返回
true 修改成功
false 修改失败
bool stt::file::File::chgLineC ( const std::string &  data,
const int &  linePos = 0 
)

修改行

注解
1、修改文件导入内存的数据中的一行
2、行数从1开始
参数
data覆盖到指定行的数据
linePos需要覆盖的行(默认最后一行)
返回
true 修改成功
false 修改失败
bool stt::file::File::closeFile ( const bool &  del = false)

关闭已打开了的文件

关闭文件

参数
deltrue:删除文件 false:不删除文件 (默认为false)
返回
true:操作成功 false:操作失败
bool stt::file::File::deleteAll ( )

删除全部

注解
删除文件中的全部行
返回
true 删除成功
false 删除失败
bool stt::file::File::deleteAllC ( )

删除全部

注解
删除文件导入内存的数据中的全部
返回
true 删除成功
false 删除失败
bool stt::file::File::deleteLine ( const int &  linePos = 0)

删除行

注解
1、删除文件中的一行
2、行数从1开始
参数
linePos需要删除的行
返回
true 删除成功
false 删除失败
bool stt::file::File::deleteLineC ( const int &  linePos = 0)

删除行

注解
1、删除文件导入内存的数据中的一行
2、行数从1开始
参数
linePos需要删除的行
返回
true 删除成功
false 删除失败
int stt::file::File::find ( const std::string &  targetString,
const int  linePos = 1 
)

查找行

注解
1、查找文件中存在目标字符串的首行
2、行数从1开始
参数
targetString需要查找的字符串
linePos从指定行开始寻找(默认从第一行开始)
返回
>=1 返回匹配的行数
-1 查找失败
int stt::file::File::findC ( const std::string &  targetString,
const int  linePos = 1 
)

查找行

注解
1、查找文件导入内存的数据中存在目标字符串的首行
2、行数从1开始
参数
targetString需要查找的字符串
linePos从指定行开始寻找(默认从第一行开始)
返回
>=1 返回匹配的行数
-1 查找失败
void stt::file::File::format ( )

格式化数据

注解
把文件的数据全部删除
void stt::file::File::formatC ( )

格式化数据

注解
把文件导入内存的数据全部删除
uint64_t stt::file::File::getFileLine ( )
inline

获取打开的文件的行数

返回
返回打开的文件的行数
警告
1,只有在文本模式下打开才可能返回正确的值
2,获取的是上一次读入内存的时候的文件的行数
3,如果没有把文件读入过内存,返回的值不会是正确的
注解
这个函数也许只有在操作内存数据的时候有作用
std::string stt::file::File::getFileName ( )
inline

获取打开的文件名字

返回
返回一个打开的文件的名字的字符串
size_t stt::file::File::getFileSize ( )
inline

获取二进制打开的文件的大小

返回
返回二进制打开的文件的大小
警告
1,只有在二进制模式下打开才可能返回正确的值
2,获取的是上一次读入内存的时候的文件的大小
3,如果没有把文件读入过内存,返回的值不会是正确的
注解
这个函数也许只有在操作内存数据的时候有作用
size_t stt::file::File::getSize1 ( )
inline

获取二进制打开的文件在内存中的大小

返回
返回二进制打开的文件在内存中的大小
警告
1,只有在二进制模式下打开才可能返回正确的值
2,获取的是此时内存中操作的文件的大小
3,如果没有把文件读入过内存,返回的值不会是正确的
注解
这个函数只有在操作内存数据的时候有作用
bool stt::file::File::isBinary ( )
inline

判断对象是否以二进制模式打开文件

返回
true:对象以二进制模式打开文件 false:对象不以二进制模式打开文件
bool stt::file::File::isOpen ( )
inline

判断对象是否打开了文件

返回
true:对象打开了文件 false:对象没有打开文件
bool stt::file::File::lockMemory ( )

把数据从磁盘读入内存

返回
true 操作成功
false 操作失败
bool stt::file::File::openFile ( const std::string &  fileName,
const bool &  create = true,
const int &  multiple = 0,
const size_t &  size = 0,
const mode_t &  mode = 0666 
)

打开文件

参数
fileName打开文件的名字(可以用绝对路径或者相对路径)
createtrue:当文件不存在的时候创建文件(以及目录) false:当文件不存在的时候不创建文件 (默认为true)
multiple当>=1的时候启用二进制打开文件,这个值为需要操作文件所需的预定的文件空间大小和原文件大小的比值  当<1的时候采用文本模式打开文件 (默认为0 文本模式打开)
size当文件大小为0且参数multiple启用了二进制打开时,因为0和任何倍数都等于0,所以参数multiple会失效。这时候需要手动填入所需的预定文件空间的大小 (单位字节)(默认为0)
mode如果create为true,且文件不存在,用位掩码表示新建文件的权限(默认为0666 rw- rw- rw-)
返回
true:打开成功
false:打开失败
注解
任何操作都需要先打开文件
警告
如果二进制模式下预留的空间太小,可能会导致段错误

示例代码 1: 文本模式打开和程序同一路径下名为"test"的文件

File f;
f.openFile("test");

示例代码 2: 二进制模式下打开和程序同一路径下名为"test"的文件,计划只读

File f;
f.openFile("test",true,1); //只读说明预留空间是原来的一倍(和原来一样)即可

示例代码 3: 二进制模式下打开和程序同一路径下名为"test"的文件,预计会写入数据,写入后大小不大于原来文件大小的两倍

File f;
f.openFile("test",true,2); //留出两倍的空间

示例代码 4: 二进制模式下打开和程序同一路径下名为"test"的文件,预计会写入数据,写入大小不大于1024字节,原文件大小为0

File f;
f.openFile("test",true,1,1024);//由于文件大小为0,代表倍数的第三个参数multiple填入多少都是无效的,需要手动指定大小
std::string& stt::file::File::read ( std::string &  data,
const int &  linePos,
const int &  num 
)

读取行

注解
1、连续读取文件中的n行
2、行数从1开始
参数
data接收数据的字符串容器
linePos读取的起始位置
num读取的行的数量
返回
字符串参数data的引用
bool stt::file::File::read ( char *  data,
const size_t &  pos,
const size_t &  size 
)

读取数据块

注解
1、读取文件中的一块数据
2、数据字节单元从0开始
参数
data接收数据的容器
pos数据起始位置
size数据块大小
返回
bool 读取成功
false 读取失败
std::string& stt::file::File::readAll ( std::string &  data)

读取全部

注解
读取文件中的全部
参数
data接收数据的字符串容器
返回
字符串参数data的引用
std::string& stt::file::File::readAllC ( std::string &  data)

读取全部

注解
读取文件导入内存的数据中的全部
参数
data接收数据的字符串容器
返回
字符串参数data的引用
std::string& stt::file::File::readC ( std::string &  data,
const int &  linePos,
const int &  num 
)

读取行

注解
1、连续读取文件导入内存的数据中的n行
2、行数从1开始
参数
data接收数据的字符串容器
linePos读取的起始位置
num读取的行的数量
返回
字符串参数data的引用
bool stt::file::File::readC ( char *  data,
const size_t &  pos,
const size_t &  size 
)

读取数据块

注解
1、读取文件导入内存的数据中的一块数据
2、数据字节单元从0开始
参数
data接收数据的容器
pos数据起始位置
size数据块大小
返回
bool 读取成功
false 读取失败
bool stt::file::File::readLine ( std::string &  data,
const int  linePos 
)

读取单行

注解
1、读取文件中的单行
2、行数从1开始
参数
data接收数据的字符串容器
linePos读取的行
返回
true 读取成功
false 读取失败
bool stt::file::File::readLineC ( std::string &  data,
const int  linePos 
)

读取单行

注解
1、读取文件导入内存的数据中的单行
2、行数从1开始
参数
data接收数据的字符串容器
linePos读取的行
返回
true 读取成功
false 读取失败
bool stt::file::File::unlockMemory ( const bool &  rec = false)

把数据从内存写入磁盘

参数
recfalse 不回退操作,把操作结果保存入磁盘; true 回退操作,不保存。(默认为false 不需要回退)。
返回
true 操作成功
false 操作失败
注解
如果写入磁盘失败会自动回退操作
bool stt::file::File::write ( const char *  data,
const size_t &  pos,
const size_t &  size 
)

写数据块

注解
1、往文件中写入一块数据
2、数据字节单元从0开始
参数
data装着写入数据的容器
pos写入位置
size写入数据块大小
返回
bool 写入成功
false 写入失败
bool stt::file::File::writeC ( const char *  data,
const size_t &  pos,
const size_t &  size 
)

写数据块

注解
1、往文件导入内存的数据中写入一块数据
2、数据字节单元从0开始
参数
data装着写入数据的容器
pos写入位置
size写入数据块大小
返回
bool 写入成功
false 写入失败

类成员变量说明

std::mutex stt::file::File::che
protected
std::unordered_map<std::string,FileThreadLock> stt::file::File::fl2
staticprotected
std::mutex stt::file::File::l1
staticprotected

该类的文档由以下文件生成: