亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dcfile.cpp

?? 通用文件操作類:該類通用文件操作進行了封裝
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

#include "DCFile.h"

DCFile::DCFile()
{
    strcpy(m_szFileName,"");
    m_bOpenFlag = false;
    m_lMaxTempLength = MAXTEMPLATEBUFFLEN;
    m_iOpenMode = 0;
}

DCFile::~DCFile()
{
    if (m_bOpenFlag)
       CloseFile();
}

/**--------------------------------------------------------------
* @param       pFileName : 文件名
* @param       iMode : 文件的建立方式
* @return      true : 成功,false : 失敗
* @description 建立并打開文件<br>
               方式 : O_CREAT | O_RDWR | O_BINARY | O_TRUNC
----------------------------------------------------------------*/
bool DCFile::CreateFile(char *pFileName)
{
    return CreateFile(pFileName,O_CREAT | O_RDWR | O_BINARY | O_TRUNC);
}

/**--------------------------------------------------------------
* @param       pFileName : 文件名
* @param       iMode : 文件的建立方式
* @return      true : 成功,false : 失敗
* @description 建立并打開文件<br>
               方式 : O_CREAT | O_RDWR | O_BINARY | O_TRUNC
----------------------------------------------------------------*/
bool  DCFile::NewFile(char *pFileName)
{
    return CreateFile(pFileName,O_CREAT | O_RDWR | O_BINARY | O_TRUNC);
}


/**--------------------------------------------------------------
* @param       pFileName : 文件名
* @param       iMode : 文件的建立方式
* @return      true : 成功,false : 失敗
* @description 建立并打開文件
*              open_mode 枚舉類型中的每個枚舉常量的含義如下:
*                 O_RDONLY       使文件只用于數據輸入,即從中讀取數據。
*                 O_WRONLY       使文件只用于數據輸出,即向它寫入數據。
*                 O_RDWR         使文件只用于數據讀寫,即向它讀寫數據。
*                 O_NDELAY	     UNIX用
*                 O_APPEND	     使文件指針移至文件尾,即最后位置。
*                 O_TRUNC	     若打開的文件存在,則清除其全部內容,使<br>
*                                之變為空文件。
*                 O_CREAT	     若打開的文件不存在則不建立它,返回打開<br>
*                                失敗信息。
*                 O_EXCL         若打開的文件存在則返回打開失敗信息。
*                 O_BINARY	     規定打開的為二進制文件,否則打開的為字<br>
*                                符文件。
*                 O_TEXT	     規定打開的為字符文件。
*  @sample        O_RDWR | O_BINARY 規定打開的文件是二進<br>
*                                制文件,并可同時用于輸入和輸出。
*----------------------------------------------------------------*/
bool DCFile::CreateFile(char *pFileName,int iMode)
{
    CloseFile();
    m_FileHandle = open(pFileName,iMode,S_IREAD | S_IWRITE);
    if (m_FileHandle == -1)
       return false;
    m_bOpenFlag = true;
    strcpy(m_szFileName,pFileName);
    m_iOpenMode = iMode;
    return true;
}

/**--------------------------------------------------------------
* @param       pszFileName : 文件名
* @return      true : 成功,false : 失敗
* @description 打開文件<br>
*              方式 : O_RDWR | O_BINARY |  O_EXCL
*---------------------------------------------------------------*/
bool  DCFile::OpenFile(char *pszFileName)
{
    return OpenFile(pszFileName,
                    O_RDWR | O_BINARY | O_EXCL );
}

/**--------------------------------------------------------------
* @param       pszFileName : 文件名
* @param       iMode : 文件的打開方式
* @return      true : 成功,false : 失敗
* @description 打開文件
*---------------------------------------------------------------*/
bool  DCFile::OpenFile(char *pszFileName,int iMode)
{
    CloseFile();
    m_FileHandle = open(pszFileName,iMode,S_IREAD | S_IWRITE);
    if (m_FileHandle == -1)
       return false;
    m_bOpenFlag = true;
    strcpy(m_szFileName,pszFileName);
    m_iOpenMode = iMode;
    return true;
}

/**--------------------------------------------------------------
* @param       無
* @return      無
* @description 關閉文件
*---------------------------------------------------------------*/
void  DCFile::CloseFile()
{
    if (m_bOpenFlag)
    {
       close(m_FileHandle);
       m_bOpenFlag = false;
    }
}

/**--------------------------------------------------------------
* @param       無
* @return      當前文件讀寫指針位置
* @description 取文件讀寫指針
*---------------------------------------------------------------*/
long  DCFile::GetCurrentPos()
{
    if (!m_bOpenFlag)
       return -1;
    return tell(m_FileHandle);
}

/**--------------------------------------------------------------
* @param       lOffset : 移動偏移
* @param       iMode : 移動方向<br>
*                 DC_SEEK_SET : 文件開頭 <br>
*                 DC_SEEK_CUR : 文件當前位置 <br>
*                 DC_SEEK_END : 文件結尾 <br>
* @return      無
* @description 移動文件讀寫指針
*---------------------------------------------------------------*/
void  DCFile::Lseek(long lOffset,int iMode)
{
    lseek(m_FileHandle,lOffset,iMode);
}

/**--------------------------------------------------------------
* @param       無
* @return      true : 已打開,false : 未打開
* @description 文件是否打開
*---------------------------------------------------------------*/
bool  DCFile::IsFileOpen()
{
    return  m_bOpenFlag;
}

/**--------------------------------------------------------------
* @param       無
* @return      true : 存在,false : 不存在
* @description 文件是否存在
*---------------------------------------------------------------*/
bool  DCFile::IsFileExist(char *pszFileName)
{
    if (access(pszFileName, 0) == 0)
       return  true;
    return false;
}

/**--------------------------------------------------------------
* @param       無
* @return      文件長度
* @description 取文件長度
*---------------------------------------------------------------*/
long  DCFile::GetFileLength()
{
    if (!IsFileOpen())
       return -1;
    long iOldPos = tell(m_FileHandle);
    lseek(m_FileHandle,0,SEEK_END);
    long lFileLength = tell(m_FileHandle);
    lseek(m_FileHandle,iOldPos,SEEK_SET);
    return lFileLength;
}

/**--------------------------------------------------------------
* @param       lInsetOffset : 插入位置的偏移
* @param       pBuffer : 緩沖區指針
* @param       lBufferLen : 緩沖區長度
* @return      true : 成功,false : 失敗
* @description 在文件某偏移處插入一塊內容,后面內容后移
*---------------------------------------------------------------*/
bool  DCFile::InsetFileBlock(long lInsetOffset,void *pBuffer, long lBufferLen)
{
   if ((lBufferLen <= 0) || (!m_bOpenFlag))
      return false;
   long lFileLen = GetFileLength();
   if (lInsetOffset > lFileLen)
      return false;
   AppendFillBlock(0,lBufferLen);
   MoveFileBlock(lInsetOffset + lBufferLen, lInsetOffset, lFileLen - lInsetOffset);
   Lseek(lInsetOffset,DC_SEEK_SET);
   WriteFile(pBuffer,lBufferLen);
   return  true;
}

/**--------------------------------------------------------------
* @param       lDeleteOffset : 刪除位置的偏移
* @param       lDeleteLen : 刪除長度
* @return      true : 成功,false : 失敗
* @description 在文件某偏移處刪除一塊,后面內容前移
*---------------------------------------------------------------*/
bool  DCFile::DeleteFileBlock(long lDeleteOffset,long lDeleteLen)
{
    if (!m_bOpenFlag)
       return false;
    long lFileLen = GetFileLength();
    if ((lFileLen <= lDeleteOffset) || (lDeleteLen <= 0))
       return false;
    long  lOldOff = lDeleteOffset + lDeleteLen;
    if (lOldOff >= lFileLen)
    {
       SetFileLength(lDeleteOffset);
       return true;
    }
    MoveFileBlock(lDeleteOffset,lOldOff,lFileLen - lOldOff);
    SetFileLength(lFileLen - lDeleteLen);
    return  true;
}

/**--------------------------------------------------------------
* @param       pBuffer : 緩沖區指針
* @param       lBufferLen : 緩沖區長度
* @return      true : 成功,false : 失敗
* @description 加入一塊內容到文件尾
*---------------------------------------------------------------*/
bool  DCFile::AppendFileBlock(void *pBuffer, long lBufferLen)
{
    if ((!m_bOpenFlag) || (lBufferLen <= 0))
       return  false;
    long lTempLength;
    if (m_lMaxTempLength >= lBufferLen)
       lTempLength = lBufferLen;
    else
       lTempLength = m_lMaxTempLength;
    SeekToEnd();
    char *pTempBuffer = (char *)pBuffer;
    long lCounter = lBufferLen;
    while (lCounter > 0)
    {
       if (lCounter > lTempLength)
       {
          WriteFile(pTempBuffer,lTempLength);
          pTempBuffer += lTempLength;
          lCounter -= lTempLength;
       }
       else
       {
          WriteFile(pTempBuffer, lCounter);
          pTempBuffer += lCounter;
          lCounter = 0;
       }
    }
    return  true;
}

/**--------------------------------------------------------------
* @param       lOffsetDst : 塊移動的目標位置的偏移
* @param       lOffsetSrc : 塊移動的源位置的偏移
* @param       lMoveLength : 移動的塊長度
* @return      true : 成功,false : 失敗
* @description 移動文件塊,簡單覆蓋,并不會把原內容后擠
*---------------------------------------------------------------*/
bool DCFile::MoveFileBlock(long lOffsetDst,long lOffsetSrc,long lMoveLength)
{
    if (!m_bOpenFlag)
       return false;
    long lFileLen = GetFileLength();
    if (((lOffsetDst + lMoveLength) > lFileLen)
        ||((lOffsetSrc + lMoveLength) > lFileLen))
       return false;
    if (lOffsetDst == lOffsetSrc)
       return true;

    long lTempLength;
    if (m_lMaxTempLength >= lMoveLength)
       lTempLength = lMoveLength;
    else
       lTempLength = m_lMaxTempLength;
    long v_OffsetSrc = lOffsetSrc;
    long v_OffsetDst = lOffsetDst;
    long lCounter = lMoveLength;
    if (lOffsetDst > lOffsetSrc)
    {
       v_OffsetSrc = lOffsetSrc + lMoveLength - lTempLength;
       v_OffsetDst = lOffsetDst + lMoveLength - lTempLength;
    }
    char  *pTempBuffer = new char[lTempLength];
    while (lCounter > 0)
    {
       if (lCounter > lTempLength)
       {
          Lseek(v_OffsetSrc,DC_SEEK_SET);
          ReadFile((void*)pTempBuffer,lTempLength);
          Lseek(v_OffsetDst,DC_SEEK_SET);
          WriteFile((void*)pTempBuffer,lTempLength);
          lCounter -= lTempLength;
       }
       else
       {
          Lseek(v_OffsetSrc,DC_SEEK_SET);
          ReadFile((void*)pTempBuffer, lCounter);
          Lseek(v_OffsetDst,DC_SEEK_SET);
          WriteFile((void*)pTempBuffer, lCounter);
          lCounter = 0;
       }
       if (lOffsetDst < lOffsetSrc)
       {
         v_OffsetSrc += lTempLength;
         v_OffsetDst += lTempLength;
       }
       else
       {
         if (lCounter > lTempLength)
         {
           v_OffsetSrc -= lTempLength;
           v_OffsetDst -= lTempLength;
         }
         else
         {
           v_OffsetSrc -= lCounter;
           v_OffsetDst -= lCounter;
         }
       }
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩二区在线观看| 成人app在线| 色综合中文字幕国产| 色av成人天堂桃色av| 国产精品二区一区二区aⅴ污介绍| 久久综合999| 亚洲高清不卡在线| 成人免费视频caoporn| 这里是久久伊人| 国产精品视频yy9299一区| 午夜久久久久久久久久一区二区| 色婷婷一区二区| 亚洲精品美国一| 91猫先生在线| 国产精品网站在线播放| 成人免费视频视频| 欧美日韩国产免费一区二区 | 久久久综合视频| 成人免费视频网站在线观看| 国产精品不卡在线| 欧美日韩一区二区在线观看视频| 免费在线观看精品| 久久久99精品久久| 色狠狠综合天天综合综合| 天天影视色香欲综合网老头| 精品国产亚洲在线| 91麻豆精品视频| 日韩成人伦理电影在线观看| 亚洲国产一区二区三区| 欧美一级免费观看| 福利视频网站一区二区三区| 亚洲一区二区偷拍精品| 日韩免费电影一区| 色哟哟日韩精品| 激情小说欧美图片| 亚洲一区二区三区激情| 精品国产一区二区三区久久久蜜月| 国产成人免费视频网站 | 中文字幕一区免费在线观看| 欧美日韩综合在线免费观看| 国产一区二区h| 亚洲一二三专区| 亚洲一区二区三区小说| 老司机精品视频在线| 视频在线观看91| 欧美亚洲国产一区二区三区va| 青青国产91久久久久久| 国产精品久久久一本精品| 欧美一区二区三级| 在线亚洲一区二区| 国产一区999| 婷婷开心久久网| 亚洲欧美激情视频在线观看一区二区三区 | 国产成人免费视频一区| 三级亚洲高清视频| 亚洲欧洲一区二区三区| 久久免费国产精品| 欧美一区二区三级| 欧美精品在线观看一区二区| av高清久久久| 国产福利一区二区三区在线视频| 青青草97国产精品免费观看| 亚洲高清三级视频| 亚洲欧洲色图综合| 一本大道久久a久久综合| 国产欧美视频一区二区| 国产老妇另类xxxxx| 亚洲第一福利视频在线| 中文字幕一区二区三区四区不卡| 久久影视一区二区| 久久久午夜精品理论片中文字幕| 欧美日韩亚洲高清一区二区| 色www精品视频在线观看| 99国产精品一区| 99精品视频一区二区三区| 播五月开心婷婷综合| 丁香婷婷综合激情五月色| 国产福利一区二区三区视频在线 | 天堂av在线一区| 亚洲香蕉伊在人在线观| 一区二区三区四区国产精品| 国产欧美日韩卡一| 国产精品久久久久aaaa樱花| 国产精品高潮呻吟久久| 中文字幕亚洲区| 亚洲大片在线观看| 国产午夜精品一区二区三区嫩草| 久久人人97超碰com| 日韩精品一区二| 欧美精品一区二区三区久久久 | 国产成人精品综合在线观看| 国产呦精品一区二区三区网站| 老汉av免费一区二区三区| 美女视频黄 久久| 精品一区二区三区不卡 | 成人美女视频在线看| 成人性生交大合| 色婷婷久久久久swag精品| 欧美三电影在线| 91精品福利在线一区二区三区 | 欧美人与性动xxxx| 91精品婷婷国产综合久久竹菊| 日韩手机在线导航| 国产色产综合色产在线视频| 国产精品乱码妇女bbbb| 毛片一区二区三区| 99精品欧美一区二区三区综合在线| 日韩和欧美一区二区三区| 免费精品视频最新在线| 国产很黄免费观看久久| 91免费在线播放| 555www色欧美视频| 国产色一区二区| 亚洲永久精品国产| 美女网站在线免费欧美精品| 成人一区二区三区中文字幕| 99国产精品99久久久久久| 911精品国产一区二区在线| 26uuu亚洲综合色| 亚洲色大成网站www久久九九| 午夜不卡在线视频| 国产a精品视频| 欧美性猛交xxxx乱大交退制版 | 国产乱色国产精品免费视频| 成人av动漫在线| 欧美日本免费一区二区三区| 欧美国产成人精品| 性久久久久久久| 成人一级黄色片| 91精品国产综合久久蜜臀| 国产精品免费视频观看| 美国十次综合导航| 日本丶国产丶欧美色综合| 久久综合九色综合97_久久久| 日韩理论在线观看| 韩国成人在线视频| 欧美日韩国产高清一区二区| 国产精品精品国产色婷婷| 免费成人性网站| 欧美亚洲国产bt| 国产精品青草综合久久久久99| 日韩精品一卡二卡三卡四卡无卡| 成人av资源网站| 2020国产精品久久精品美国| 亚洲一区二区三区自拍| 成人av网站在线观看免费| 欧美变态tickle挠乳网站| 香蕉影视欧美成人| 日本韩国欧美一区| 中文字幕一区二区三区在线不卡| 国产麻豆91精品| 精品久久久久久久久久久院品网| 亚洲mv在线观看| 欧美亚洲国产一区二区三区va| 中文字幕中文在线不卡住| 国产精品88888| 精品国产乱码久久久久久夜甘婷婷| 亚洲国产另类精品专区| 色综合天天综合在线视频| 亚洲国产精品成人综合 | 99久久99久久免费精品蜜臀| 久久新电视剧免费观看| 精品影视av免费| 日韩写真欧美这视频| 欧美aaa在线| 在线综合亚洲欧美在线视频| 亚洲国产另类av| 欧美午夜精品久久久久久超碰| 亚洲人成网站色在线观看| 99riav久久精品riav| 国产精品理论在线观看| av在线不卡观看免费观看| 中文欧美字幕免费| 99热这里都是精品| 中文字幕一区在线观看视频| 成人精品高清在线| 亚洲精品国产成人久久av盗摄| 91原创在线视频| 亚洲精品国产视频| 欧美日韩国产综合一区二区| 午夜亚洲福利老司机| 欧美肥妇free| 久久99久久精品| 国产欧美日韩一区二区三区在线观看| 激情欧美一区二区| 国产欧美一区二区精品久导航| 成人免费毛片a| 一区二区视频在线| 欧美三级韩国三级日本三斤| 日本特黄久久久高潮| 精品国产一区a| 99久久精品免费看国产免费软件| 中文字幕一区二区三区在线观看| 色先锋资源久久综合| 日韩精品一级中文字幕精品视频免费观看| 日韩欧美区一区二| 粉嫩aⅴ一区二区三区四区| 亚洲在线视频免费观看| 欧美一区二区三区喷汁尤物| 国产精品 日产精品 欧美精品|