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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dcfile.cpp

?? 通用文件操作類(lèi):該類(lèi)通用文件操作進(jìn)行了封裝
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):

#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 建立并打開(kāi)文件<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 建立并打開(kāi)文件<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 建立并打開(kāi)文件
*              open_mode 枚舉類(lèi)型中的每個(gè)枚舉常量的含義如下:
*                 O_RDONLY       使文件只用于數(shù)據(jù)輸入,即從中讀取數(shù)據(jù)。
*                 O_WRONLY       使文件只用于數(shù)據(jù)輸出,即向它寫(xiě)入數(shù)據(jù)。
*                 O_RDWR         使文件只用于數(shù)據(jù)讀寫(xiě),即向它讀寫(xiě)數(shù)據(jù)。
*                 O_NDELAY	     UNIX用
*                 O_APPEND	     使文件指針移至文件尾,即最后位置。
*                 O_TRUNC	     若打開(kāi)的文件存在,則清除其全部?jī)?nèi)容,使<br>
*                                之變?yōu)榭瘴募?*                 O_CREAT	     若打開(kāi)的文件不存在則不建立它,返回打開(kāi)<br>
*                                失敗信息。
*                 O_EXCL         若打開(kāi)的文件存在則返回打開(kāi)失敗信息。
*                 O_BINARY	     規(guī)定打開(kāi)的為二進(jìn)制文件,否則打開(kāi)的為字<br>
*                                符文件。
*                 O_TEXT	     規(guī)定打開(kāi)的為字符文件。
*  @sample        O_RDWR | O_BINARY 規(guī)定打開(kāi)的文件是二進(jìn)<br>
*                                制文件,并可同時(shí)用于輸入和輸出。
*----------------------------------------------------------------*/
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 打開(kāi)文件<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 : 文件的打開(kāi)方式
* @return      true : 成功,false : 失敗
* @description 打開(kāi)文件
*---------------------------------------------------------------*/
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       無(wú)
* @return      無(wú)
* @description 關(guān)閉文件
*---------------------------------------------------------------*/
void  DCFile::CloseFile()
{
    if (m_bOpenFlag)
    {
       close(m_FileHandle);
       m_bOpenFlag = false;
    }
}

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

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

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

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

/**--------------------------------------------------------------
* @param       無(wú)
* @return      文件長(zhǎng)度
* @description 取文件長(zhǎng)度
*---------------------------------------------------------------*/
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 : 緩沖區(qū)指針
* @param       lBufferLen : 緩沖區(qū)長(zhǎng)度
* @return      true : 成功,false : 失敗
* @description 在文件某偏移處插入一塊內(nèi)容,后面內(nèi)容后移
*---------------------------------------------------------------*/
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 : 刪除長(zhǎng)度
* @return      true : 成功,false : 失敗
* @description 在文件某偏移處刪除一塊,后面內(nèi)容前移
*---------------------------------------------------------------*/
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 : 緩沖區(qū)指針
* @param       lBufferLen : 緩沖區(qū)長(zhǎng)度
* @return      true : 成功,false : 失敗
* @description 加入一塊內(nèi)容到文件尾
*---------------------------------------------------------------*/
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 : 塊移動(dòng)的目標(biāo)位置的偏移
* @param       lOffsetSrc : 塊移動(dòng)的源位置的偏移
* @param       lMoveLength : 移動(dòng)的塊長(zhǎng)度
* @return      true : 成功,false : 失敗
* @description 移動(dòng)文件塊,簡(jiǎn)單覆蓋,并不會(huì)把原內(nèi)容后擠
*---------------------------------------------------------------*/
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;
         }
       }
    }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女性喷水在线观看一区| 日韩免费性生活视频播放| 大美女一区二区三区| 夜夜嗨av一区二区三区四季av| 日韩免费电影一区| 日韩一区二区三区免费看| 97久久超碰精品国产| 色综合激情久久| 国产精品每日更新| 91精品在线麻豆| 欧美亚州韩日在线看免费版国语版| 国产超碰在线一区| 香蕉成人啪国产精品视频综合网 | 日韩三级中文字幕| 日本韩国精品在线| 色又黄又爽网站www久久| av不卡一区二区三区| 粉嫩蜜臀av国产精品网站| 国产精品资源在线看| 国产一区二区女| 风间由美一区二区av101| 国产综合色产在线精品| 亚洲欧洲精品一区二区精品久久久| 欧美经典一区二区| 亚洲综合无码一区二区| 日本在线不卡一区| 久久99久国产精品黄毛片色诱| 玖玖九九国产精品| 波多野结衣的一区二区三区| youjizz国产精品| 欧美午夜宅男影院| 精品动漫一区二区三区在线观看 | 91浏览器打开| 日韩你懂的电影在线观看| 久久精品免视看| 亚洲国产精品尤物yw在线观看| 国产在线视频不卡二| 亚洲男人的天堂网| 一区二区三区欧美日韩| 男女男精品视频| 91视频91自| 国产日韩欧美高清| 奇米色一区二区| 成人免费高清在线观看| 制服丝袜成人动漫| 中文字幕一区视频| 久久99精品国产麻豆婷婷| 色婷婷久久久久swag精品| 久久午夜羞羞影院免费观看| 亚洲综合一区二区精品导航| 成人中文字幕电影| 欧美zozo另类异族| 日韩av中文字幕一区二区| 91老司机福利 在线| 青青草国产成人av片免费| 在线亚洲+欧美+日本专区| 国产精品欧美一区喷水| 久久精品国产**网站演员| 欧美日韩国产大片| 亚洲精品免费视频| 色天使色偷偷av一区二区| 国产精品大尺度| www.激情成人| 136国产福利精品导航| 一本色道a无线码一区v| 国产欧美一区二区三区在线看蜜臀| 免费高清在线视频一区·| 91精品婷婷国产综合久久竹菊| 亚洲国产aⅴ天堂久久| 欧美亚洲综合久久| 婷婷中文字幕一区三区| 日韩一区二区三区免费看 | 成人精品国产一区二区4080| 国产亚洲人成网站| 国产一区二区在线视频| 国产日韩欧美激情| 99精品热视频| 午夜精品久久久久久久99水蜜桃 | 精品国产乱码久久久久久图片 | 国产麻豆视频精品| 成人欧美一区二区三区| 欧美综合在线视频| 天堂一区二区在线| 精品国产一区二区国模嫣然| 韩国女主播一区二区三区| 国产精品污www在线观看| 91蜜桃在线免费视频| 裸体一区二区三区| 午夜精品影院在线观看| 欧美久久久久久久久中文字幕| 日韩福利视频网| 一区二区中文视频| 91精品国产综合久久婷婷香蕉 | 性欧美疯狂xxxxbbbb| 久久精品亚洲一区二区三区浴池| 9i在线看片成人免费| 日本午夜一区二区| 亚洲精品欧美综合四区| 久久综合九色综合欧美就去吻| 91在线小视频| jiyouzz国产精品久久| 免费看欧美女人艹b| 亚洲精品视频一区二区| 国产精品免费看片| 国产盗摄一区二区| 一级日本不卡的影视| 国产欧美日韩另类一区| 日韩情涩欧美日韩视频| 欧美午夜理伦三级在线观看| 成人小视频在线| 国产毛片精品视频| 韩国毛片一区二区三区| 久久国产婷婷国产香蕉| 五月天丁香久久| 日日夜夜一区二区| 日韩激情视频网站| 日韩av午夜在线观看| 免费观看久久久4p| 日韩不卡手机在线v区| 日本不卡一区二区三区高清视频| 亚洲一区二区在线观看视频| 亚洲另类在线视频| 亚洲第一主播视频| 国产精品美女久久久久久久| voyeur盗摄精品| 成人免费毛片嘿嘿连载视频| 国产福利精品导航| 99精品久久只有精品| 91香蕉视频mp4| 色婷婷av一区二区三区软件| 日本大香伊一区二区三区| 欧美视频一区二区三区在线观看 | a美女胸又www黄视频久久| 不卡的av中国片| 欧美日韩电影在线| 欧美一区二区视频在线观看2022| 欧美大片日本大片免费观看| 欧美—级在线免费片| 亚洲精品免费视频| 激情深爱一区二区| av中文字幕一区| 日韩亚洲欧美中文三级| 中文字幕av在线一区二区三区| 亚洲gay无套男同| 成人av免费在线播放| 91精品国产高清一区二区三区蜜臀 | 欧美午夜片在线观看| 国产亚洲婷婷免费| 日本成人在线电影网| 91福利小视频| 中文在线免费一区三区高中清不卡| 五月天久久比比资源色| 99免费精品视频| 久久亚洲一区二区三区明星换脸| 亚洲高清免费在线| 久久综合久久综合久久| 日韩国产欧美在线观看| 欧美三区在线视频| 亚洲激情图片qvod| fc2成人免费人成在线观看播放| 日韩三区在线观看| 蜜臀av性久久久久av蜜臀妖精 | 亚洲国产精品成人久久综合一区| 免费观看成人av| 日韩一区二区三区四区五区六区| 亚洲精品免费一二三区| 色噜噜狠狠成人中文综合| 日韩一区在线看| 色婷婷精品久久二区二区蜜臀av| 欧美午夜一区二区三区免费大片| 日韩一级片网站| 日本视频一区二区| 91精品国产综合久久蜜臀| 天天综合网天天综合色| 欧美精品v国产精品v日韩精品| 亚洲一区视频在线| 日韩一区和二区| 紧缚奴在线一区二区三区| 亚洲国产日韩一级| 94色蜜桃网一区二区三区| 亚洲自拍另类综合| 日韩视频一区二区三区在线播放| 麻豆久久久久久久| 国产精品久久二区二区| 欧美中文字幕一区二区三区亚洲 | 色老头久久综合| 蜜臀精品一区二区三区在线观看| 日韩美女视频在线| 99久久婷婷国产| 日韩精品每日更新| 国产精品视频一二三| 欧美日韩免费一区二区三区| 国产综合成人久久大片91| 亚洲精品国产一区二区三区四区在线| 欧美精选一区二区| 99精品黄色片免费大全| 久久成人久久爱| 亚洲高清久久久| 国产精品污污网站在线观看| 欧美一区二区三区视频免费播放|