静态库封装之ComFile类

cnblogs 2024-10-25 08:09:00 阅读 89

文件操作类主要包括:

1、判断文件是否存在

2、读取bin文件

3、读取文件流

ComFile.h

<code>

/*

@author:EricsT

@data:20241024

@version:V1.0

@history:

@author @data @version @content

EricsT 20241024 V1.0 新增ComFile类[common、FILE以及stream部分]

*/

#pragma once

#include <string>

#include <fstream>

using namespace std;

class ComFile

{

public:

//common

//=============================================================================================================

/*

func:判断文件是否存在

@strFilePath:文件路径

@csFilePath:文件路径

@pchFilePath:文件路径

ret:存在true,不存在false

*/

static bool isFileExists(string strFilePath);//20241024

static bool isFileExists(CString csFilePath);//20241024

static bool isFileExists(PCHAR pchFilePath);//20241024

//FILE

//=============================================================================================================

/*

func:在bin文件的指定地址处读取1个字节

@fp:文件指针

@iAddr:指定地址

ret:读取的数据

*/

static BYTE ReadByteFromAddr_Bin(FILE* fp, DWORD iAddr);//20241024

/*

func:在bin文件的当前地址处读取1个字节

@fp:文件指针

ret:读取的数据

*/

static BYTE ReadByte_Bin(FILE* fp);//20241024

/*

func:在bin文件的指定地址处读取2个字节

@fp:文件指针

@iAddr:指定地址

ret:读取的数据

*/

static WORD ReadWordFromAddr_Bin(FILE* fp, DWORD iAddr);//20241024

/*

func:在bin文件的当前地址处读取2个字节

@fp:文件指针

ret:读取的数据

*/

static WORD ReadWord_Bin(FILE* fp);//20241024

/*

func:在bin文件的指定地址处读取4个字节

@fp:文件指针

@iAddr:指定地址

ret:读取的数据

*/

static DWORD ReadDWordFromAddr_Bin(FILE* fp, DWORD iAddr);//20241024

/*

func:在bin文件的当前地址处读取4个字节

@fp:文件指针

ret:读取的数据

*/

static DWORD ReadDWord_Bin(FILE* fp);//20241024

/*

func:在bin文件的指定地址处读取指定字节

@fp:文件指针

@iAddr:指定地址

@num:指定字节

*/

static void ReadUselessByteFromAddr_Bin(FILE* fp, DWORD iAddr, DWORD num);//20241024

/*

func:在bin文件的当前地址处读取指定字节

@fp:文件指针

@num:指定字节

*/

static void ReadUselessByte_Bin(FILE* fp, DWORD num);//20241024

//stream

//=============================================================================================================

/*

func:在stream文件中读取一行

@ifs:文件流

ret:读取的内容

*/

static string GetLine_Stream(ifstream& ifs);//20241024

};

ComFile.cpp

/*

@author:EricsT

@data:20241024

@version:V1.0

*/

#include "stdafx.h"

#include "ComFile.h"

#include <io.h>

bool ComFile::isFileExists(string strFilePath)

{

if (-1 == _access(strFilePath.c_str(), 0))

return false;

return true;

}

bool ComFile::isFileExists(CString csFilePath)

{

//CStringToString

int len = csFilePath.GetLength();

PCHAR pch = new char[len + 1];

size_t pchSize = wcstombs(pch, csFilePath, len + 1);

if (pchSize == wstring::npos)

{

delete pch;

return "";

}

string strFilePath(pch);

delete pch;

if (-1 == _access(strFilePath.c_str(), 0))

return false;

return true;

}

bool ComFile::isFileExists(PCHAR pchFilePath)

{

if (-1 == _access(pchFilePath, 0))

return false;

return true;

}

BYTE ComFile::ReadByteFromAddr_Bin(FILE* fp, DWORD iAddr)

{

if (nullptr == fp)

return 0;

BYTE bRet = 0;

fseek(fp, iAddr, SEEK_SET);

fread(&bRet, sizeof(BYTE), 1, fp);

return bRet & 0xFF;

}

BYTE ComFile::ReadByte_Bin(FILE* fp)

{

if (nullptr == fp)

return 0;

BYTE bRet = 0;

fread(&bRet, sizeof(BYTE), 1, fp);

return bRet & 0xFF;

}

WORD ComFile::ReadWordFromAddr_Bin(FILE* fp, DWORD iAddr)

{

if (nullptr == fp)

return 0;

WORD wRet = 0;

fseek(fp, iAddr, SEEK_SET);

fread(&wRet, sizeof(WORD), 1, fp);

return wRet & 0xFFFF;

}

WORD ComFile::ReadWord_Bin(FILE * fp)

{

if (nullptr == fp)

return 0;

WORD wRet = 0;

fread(&wRet, sizeof(WORD), 1, fp);

return wRet & 0xFFFF;

}

DWORD ComFile::ReadDWordFromAddr_Bin(FILE* fp, DWORD iAddr)

{

if (nullptr == fp)

return 0;

DWORD dwRet = 0;

fseek(fp, iAddr, SEEK_SET);

fread(&dwRet, sizeof(DWORD), 1, fp);

return dwRet & 0xFFFFFFFF;

}

DWORD ComFile::ReadDWord_Bin(FILE* fp)

{

if (nullptr == fp)

return 0;

DWORD dwRet = 0;

fread(&dwRet, sizeof(DWORD), 1, fp);

return dwRet & 0xFFFFFFFF;

}

void ComFile::ReadUselessByteFromAddr_Bin(FILE* fp, DWORD iAddr, DWORD num)

{

if (nullptr == fp)

return;

BYTE bRet;

fseek(fp, iAddr, SEEK_SET);

for (int i = 0; i < num; i++)

fread(&bRet, sizeof(BYTE), 1, fp);

}

void ComFile::ReadUselessByte_Bin(FILE* fp, DWORD num)

{

if (nullptr == fp)

return;

BYTE bRet;

for (int i = 0; i < num; i++)

fread(&bRet, sizeof(BYTE), 1, fp);

}

std::string ComFile::GetLine_Stream(ifstream& ifs)

{

if (!ifs.is_open())

return string();

string strLine;

getline(ifs, strLine);

return strLine;

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。