静态库封装之ComFile类

打印 上一主题 下一主题

主题 881|帖子 881|积分 2643

ComFile.h
  1. /*
  2. @author:EricsT
  3. @data:20241024
  4. @version:V1.0
  5. @history:
  6.         @author @data @version @content
  7.         EricsT 20241024 V1.0 新增ComFile类[common、FILE以及stream部分]
  8. */
  9. #pragma once
  10. #include <string>
  11. #include <fstream>
  12. using namespace std;
  13. class ComFile
  14. {
  15. public:
  16.         //common
  17.         //=============================================================================================================
  18.         /*
  19.         func:判断文件是否存在
  20.         @strFilePath:文件路径
  21.         @csFilePath:文件路径
  22.         @pchFilePath:文件路径
  23.         ret:存在true,不存在false
  24.         */
  25.         static bool isFileExists(string strFilePath);//20241024
  26.         static bool isFileExists(CString csFilePath);//20241024
  27.         static bool isFileExists(PCHAR pchFilePath);//20241024
  28.         //FILE
  29.         //=============================================================================================================
  30.         /*
  31.         func:在bin文件的指定地址处读取1个字节
  32.         @fp:文件指针
  33.         @iAddr:指定地址
  34.         ret:读取的数据
  35.         */
  36.         static BYTE ReadByteFromAddr_Bin(FILE* fp, DWORD iAddr);//20241024
  37.         /*
  38.         func:在bin文件的当前地址处读取1个字节
  39.         @fp:文件指针
  40.         ret:读取的数据
  41.         */
  42.         static BYTE ReadByte_Bin(FILE* fp);//20241024
  43.         /*
  44.         func:在bin文件的指定地址处读取2个字节
  45.         @fp:文件指针
  46.         @iAddr:指定地址
  47.         ret:读取的数据
  48.         */
  49.         static WORD ReadWordFromAddr_Bin(FILE* fp, DWORD iAddr);//20241024
  50.         /*
  51.         func:在bin文件的当前地址处读取2个字节
  52.         @fp:文件指针
  53.         ret:读取的数据
  54.         */
  55.         static WORD ReadWord_Bin(FILE* fp);//20241024
  56.         /*
  57.         func:在bin文件的指定地址处读取4个字节
  58.         @fp:文件指针
  59.         @iAddr:指定地址
  60.         ret:读取的数据
  61.         */
  62.         static DWORD ReadDWordFromAddr_Bin(FILE* fp, DWORD iAddr);//20241024
  63.         /*
  64.         func:在bin文件的当前地址处读取4个字节
  65.         @fp:文件指针
  66.         ret:读取的数据
  67.         */
  68.         static DWORD ReadDWord_Bin(FILE* fp);//20241024
  69.         /*
  70.         func:在bin文件的指定地址处读取指定字节
  71.         @fp:文件指针
  72.         @iAddr:指定地址
  73.         @num:指定字节
  74.         */
  75.         static void ReadUselessByteFromAddr_Bin(FILE* fp, DWORD iAddr, DWORD num);//20241024
  76.         /*
  77.         func:在bin文件的当前地址处读取指定字节
  78.         @fp:文件指针
  79.         @num:指定字节
  80.         */
  81.         static void ReadUselessByte_Bin(FILE* fp, DWORD num);//20241024
  82.         //stream
  83.         //=============================================================================================================
  84.        
  85.         /*
  86.         func:在stream文件中读取一行
  87.         @ifs:文件流
  88.         ret:读取的内容
  89.         */
  90.         static string GetLine_Stream(ifstream& ifs);//20241024
  91. };
复制代码
ComFile.cpp
  1. /*
  2. @author:EricsT
  3. @data:20241024
  4. @version:V1.0
  5. */
  6. #include "stdafx.h"
  7. #include "ComFile.h"
  8. #include <io.h>
  9. bool ComFile::isFileExists(string strFilePath)
  10. {
  11.         if (-1 == _access(strFilePath.c_str(), 0))
  12.                 return false;
  13.         return true;
  14. }
  15. bool ComFile::isFileExists(CString csFilePath)
  16. {
  17.         //CStringToString
  18.         int len = csFilePath.GetLength();
  19.         PCHAR pch = new char[len + 1];
  20.         size_t pchSize = wcstombs(pch, csFilePath, len + 1);
  21.         if (pchSize == wstring::npos)
  22.         {
  23.                 delete pch;
  24.                 return "";
  25.         }
  26.         string strFilePath(pch);
  27.         delete pch;
  28.         if (-1 == _access(strFilePath.c_str(), 0))
  29.                 return false;
  30.         return true;
  31. }
  32. bool ComFile::isFileExists(PCHAR pchFilePath)
  33. {
  34.         if (-1 == _access(pchFilePath, 0))
  35.                 return false;
  36.         return true;
  37. }
  38. BYTE ComFile::ReadByteFromAddr_Bin(FILE* fp, DWORD iAddr)
  39. {
  40.         if (nullptr == fp)
  41.                 return 0;
  42.         BYTE bRet = 0;
  43.         fseek(fp, iAddr, SEEK_SET);
  44.         fread(&bRet, sizeof(BYTE), 1, fp);
  45.         return bRet & 0xFF;
  46. }
  47. BYTE ComFile::ReadByte_Bin(FILE* fp)
  48. {
  49.         if (nullptr == fp)
  50.                 return 0;
  51.         BYTE bRet = 0;
  52.         fread(&bRet, sizeof(BYTE), 1, fp);
  53.         return bRet & 0xFF;
  54. }
  55. WORD ComFile::ReadWordFromAddr_Bin(FILE* fp, DWORD iAddr)
  56. {
  57.         if (nullptr == fp)
  58.                 return 0;
  59.         WORD wRet = 0;
  60.         fseek(fp, iAddr, SEEK_SET);
  61.         fread(&wRet, sizeof(WORD), 1, fp);
  62.         return wRet & 0xFFFF;
  63. }
  64. WORD ComFile::ReadWord_Bin(FILE * fp)
  65. {
  66.         if (nullptr == fp)
  67.                 return 0;
  68.         WORD wRet = 0;
  69.         fread(&wRet, sizeof(WORD), 1, fp);
  70.         return wRet & 0xFFFF;
  71. }
  72. DWORD ComFile::ReadDWordFromAddr_Bin(FILE* fp, DWORD iAddr)
  73. {
  74.         if (nullptr == fp)
  75.                 return 0;
  76.         DWORD dwRet = 0;
  77.         fseek(fp, iAddr, SEEK_SET);
  78.         fread(&dwRet, sizeof(DWORD), 1, fp);
  79.         return dwRet & 0xFFFFFFFF;
  80. }
  81. DWORD ComFile::ReadDWord_Bin(FILE* fp)
  82. {
  83.                 if (nullptr == fp)
  84.                 return 0;
  85.         DWORD dwRet = 0;
  86.         fread(&dwRet, sizeof(DWORD), 1, fp);
  87.         return dwRet & 0xFFFFFFFF;
  88. }
  89. void ComFile::ReadUselessByteFromAddr_Bin(FILE* fp, DWORD iAddr, DWORD num)
  90. {
  91.         if (nullptr == fp)
  92.                 return;
  93.         BYTE bRet;
  94.         fseek(fp, iAddr, SEEK_SET);
  95.         for (int i = 0; i < num; i++)
  96.                 fread(&bRet, sizeof(BYTE), 1, fp);
  97. }
  98. void ComFile::ReadUselessByte_Bin(FILE* fp, DWORD num)
  99. {
  100.         if (nullptr == fp)
  101.                 return;
  102.         BYTE bRet;
  103.         for (int i = 0; i < num; i++)
  104.                 fread(&bRet, sizeof(BYTE), 1, fp);
  105. }
  106. std::string ComFile::GetLine_Stream(ifstream& ifs)
  107. {
  108.         if (!ifs.is_open())
  109.                 return string();
  110.         string strLine;
  111.         getline(ifs, strLine);
  112.         return strLine;
  113. }
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表