静态库封装之ComFile类

server/2025/1/8 4:54:03/

ComFile.h


/*
@author:EricsT
@data:20241024
@version:V1.0
@history:@author @data @version @contentEricsT 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);//20241024static bool isFileExists(CString csFilePath);//20241024static 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)
{//CStringToStringint 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;
}

关注灵活就业新业态,关注公账号:贤才宝(贤才宝https://www.51xcbw.com)  


http://www.ppmy.cn/server/156692.html

相关文章

【Uniapp-Vue3】navigator路由与页面跳转

我们想要进行页面跳转就需要使用到navigator标签。 我们现在有两个页面index.vue和demo1.vue。 一、页面跳转&#xff08;可返回&#xff09; index.vue中进行如下配置&#xff1a; <template><view>这是主页面</view><navigator url"/pages/demo…

SpringBootWeb案例-2

文章目录 SpringBootWeb案例1. 新增员工1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 功能测试1.6 前后端联调 2. 文件上传2.1 简介2.2 本地存储2.3 阿里云OSS2.3.1 准备2.3.2 入门2.3.3 集成 3. 修改员工3.1 查询回显3.1.1 接口文档3.1.2 实现思路3.1.3 代码实现3.1.4 po…

基于python的网络爬虫爬取天气数据及可视化分析(Matplotlib、sk-learn等,包括ppt,视频)

基于Python爬取天气数据信息与可视化分析&#xff08;文末完整源码&#xff09; 基于python的网络爬虫爬取天气数据及可视化分析 可以看看演示视频。 摘要 基于Python爬取天气数据信息与可视化分析 本论文旨在利用Python编程语言实现天气数据信息的爬取和可视化分析。天气…

elementui table 表格 分页多选,保持选中状态

elementui多选时分页&#xff0c;解决选中状态无法保留选中项问题&#xff1a; 在el-table标签中加入row-key&#xff0c;row-key的值取当前数据里的唯一key在el-table-column selection 项中加入以下:reserve-selection“true” 完成后&#xff0c;将需要清空的地方 ( 如返回…

Couchbase、ClickHouse 和 Apache Doris在架构、功能、应用场景等方面的详细对比

Couchbase、ClickHouse 和 Apache Doris 是三种功能和设计目标不同的数据库系统。以下是它们在架构、功能、应用场景等方面的详细对比&#xff1a; 1. 核心定位 数据库核心定位Couchbase分布式 NoSQL 文档数据库&#xff0c;主要用于高性能、低延迟的实时查询和事务型工作负载…

基于Centos 7系统的安全加固方案

创作不易&#xff0c;麻烦点个免费的赞和关注吧&#xff01; 声明&#xff01; 免责声明&#xff1a;本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式的损失或损害&#xff0c;包括但不限于数据丢失、系统损坏、个人隐私泄露或经济损失等&#xf…

【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习(L14+L15+L16)

文章目录 Section 4&#xff1a;The Vim Help System&#xff08;Vim 帮助系统&#xff09;S04L14 Getting Help1 打开帮助系统2 退出帮助系统3 查看具体命令的帮助文档4 查看帮助文档中的主题5 帮助文档间的上翻、下翻6 关于 linewise7 查看光标所在术语名词的帮助文档8 关于退…

Git教程

Git教程 1. 什么是Git2. Git使用教程2.1 Git配置2.2 拉取Github的项目本地2.2.1 直接拉取(方法一)2.2.1 本地初始化仓库(方法二) 2.3 对项目进行修改2.3.1 查看分支2.3.2 新建分支2.3.3 切换分支2.3.4 删除分支2.3.5 查看远程分支和本地分支的连接情况 2.4 提交修改1. Header1.…