Qt4 5 0記憶體對映檔案示例

2021-05-23 21:15:36 字數 1025 閱讀 2757

採用qt4.5.0記憶體對映檔案技術複製乙個檔案。速度要比使用io讀寫快一倍以上。

bool copydataqt4::copyfilemap()

qfile objoutputfile(m_stroutputfile);

if (!objoutputfile.open(qiodevice::unbuffered | qiodevice::readwrite | qiodevice::truncate))

uchar * pinputdata;

uchar * poutputdata;

m_qint64fileoffset = 0;

m_qint64inputfilesize = objinputfile.size();

objoutputfile.resize(m_qint64inputfilesize);

int untmpblocksize = 0;

while(m_qint64fileoffset < m_qint64inputfilesize)

else

pinputdata = objinputfile.map(m_qint64fileoffset,untmpblocksize);

if (pinputdata == null)

poutputdata = objoutputfile.map(m_qint64fileoffset,untmpblocksize);

if (poutputdata == null)

memcpy(poutputdata,pinputdata,untmpblocksize);

m_qint64fileoffset += untmpblocksize;

objinputfile.unmap(pinputdata);

objoutputfile.unmap(poutputdata);

} objinputfile.close();

objoutputfile.close();

return true;

}

使用記憶體對映檔案處理大檔案示例

前面我們講過記憶體對映檔案的使用,但是,如果檔案大小超過記憶體大小那怎麼辦呢 其實,我們在把記憶體對映檔案對映到程序的位址空間時,可以對映一部分,通過乙個迴圈,把整個檔案處理完 下面我舉個例子 include include include using namespace std int64 cou...

linux記憶體對映示例

一 記憶體對映介紹 linux對外設的一般操作,使用者空間不能直接對外設訪問,而是通過核心空間間接訪問,如下圖訪問磁碟 二 linux記憶體對映函式 mmap對映函式 功能 將乙個檔案或者其它物件對映進記憶體。檔案被對映到多個頁上,如果檔案的大小不是所有頁的大小之和,最後乙個頁不被使用的空間將會清零...

qt的記憶體對映

uchar qfiledevice map qint64 offset,qint64 size,qfiledevice memorymapflags flags nooptions 從偏移量開始將檔案的大小位元組對映到記憶體中。應該開啟乙個檔案以使對映成功,換句話說就是對映必須開啟乙個檔案,但在對映...