开发过程,遇见将文件以二进制的方式读取到缓存中的场景,于是在这里记录一下,方便以后复用。
读文件
void readFile(string& filePath, std::vector<unsigned char>& data )
{
ifstream file(filePath.c_str(), std::ios::in | std::ios::binary);
if(!(file.is_open()))
{
return;
}
file.seekg(0, std::ios::end); //定位输入流结束位置
std::ios::pos_type endPos = file.tellg(); //获取输入流结尾指针
unsigned long fileLen = static_cast<unsigned long>(endPos); //获取输入数据大小
file.seekg(0, std::ios::beg); //定位输入流开始位置
data.resize(fileLen);
file.read((char*)(&data[0]), fileLen); //将输入数据读取到缓存中
//自动关闭文件
}
写文件
void writeFile(string& filePath, vector<unsigned char> data )
{
ofstream file(filePath.c_str(), std::ios::out | std::ios::binary);
if(!(file.is_open()))
{
return;
}
file.write((char*)&data[0], data.size()); //将数据写到文件中
//自动关闭文件