久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3153|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

一個(gè)利用內(nèi)存映射讀取文件的程序(有待改進(jìn)。。。)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:77367 發(fā)表于 2015-4-18 21:03 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
別人研究紅外視屏,從紅外視屏里得到有180個(gè)TXT文件,一個(gè)文件對(duì)應(yīng)一個(gè)frame的像素,每個(gè)文件有512*640個(gè)4位數(shù)的數(shù)字,一個(gè)文件大小1.56MB,180個(gè)文件是281MB,如圖,要求把這些文件對(duì)應(yīng)位置上的數(shù)字加起來寫到列外一個(gè)文件,看到他們用C語言fopen、fscanf運(yùn)行程序運(yùn)行了快一個(gè)小時(shí)。。。。。。
                        

然后用內(nèi)存映射讀取文件,試著加了三個(gè)文件,運(yùn)行快十秒鐘的樣子,180個(gè)文件9分鐘。。。。

程序界面:



                                                            

                                               

主要代碼:
void CplusDlg::OnBnClickedOk()
{
CMemMapFile m_mmf;
CMemMapFile m_mmfdata;
CString szTmp;
CString szTmpfile;
//TCHAR pszTmpFile[_MAX_PATH];


CMemMapFile m_mmdstfile;
CString szdstFile;
CString szdstTmp;


CFileFind find;
CFileStatus fs;
TCHAR *tokenPtr = NULL;
TCHAR *next_token = NULL;
TCHAR *tokenPtr2 = NULL;
TCHAR *next_token2 = NULL;
TCHAR  delims[]  = _T("  ,\t\r\n");
BOOL bSuccess;  //
LPVOID lpData = NULL ;
LPVOID lpdstData = NULL;
LPVOID lpfData = NULL;


LONG number=0;
LONG number2=0;


BeginWaitCursor();


UpdateData();
if (m_dstFile.IsEmpty())
{
szdstFile = _T("E:\\cegr01923.txt");
}else{
szdstFile = m_dstFile;
}
UpdateData(FALSE);


szTmp = m_Path;
szTmp +=_T("\\*.txt");
bSuccess = find.FindFile(szTmp);
m_listTxt.ResetContent();


BOOL bFirst;
bFirst = TRUE;
szTmp=_T("");
while(bSuccess )
{
bSuccess = find.FindNextFile();
CString file = find.GetFilePath();
m_listTxt.AddString(file);

if (file.IsEmpty()) return;
if (bFirst)
{
VERIFY(CopyFile(file, szdstFile, FALSE));
bFirst = FALSE;
continue;
}


//backup
GetuniqueTempName(szTmpfile);
//_stprintf_s(pszTmpFile, MAX_PATH, _T("%s"), szTmpfile);
VERIFY(CopyFile(file, szTmpfile, FALSE));
m_mmfdata.MapFile(szTmpfile,FALSE);
lpfData = m_mmfdata.Open();
ASSERT(lpfData);
VERIFY(CFile::GetStatus(szTmpfile, fs));
ASSERT(fs.m_size <= ULONG_MAX);


///
GetuniqueTempName(szdstTmp);
VERIFY(CopyFile(szdstFile, szdstTmp, FALSE));
m_mmf.MapFile(szdstTmp);
lpData = m_mmf.Open();
ASSERT(lpData);
VERIFY(CFile::GetStatus(szdstTmp, fs));
ASSERT(fs.m_size <= ULONG_MAX);


// m_mmdstfile.MapFile(szdstFile,FALSE,FALSE,NULL,NULL,TRUE,0);
// lpdstData = m_mmdstfile.Open();
// ASSERT(lpdstData);
// VERIFY(CFile::GetStatus(szdstFile, fs));
// ASSERT(fs.m_size <= ULONG_MAX);


// if (lpdstData)
// memset(lpdstData,0, static_cast<size_t>(fs.m_size));



CFile m_dstFile(szdstFile,CFile::modeCreate|CFile::modeWrite);
m_dstFile.SetLength(0);


tokenPtr=_tcstok_s(static_cast<TCHAR *>(lpfData),delims,&next_token);   //strtok_s會(huì)修改原字符串
tokenPtr2=_tcstok_s(static_cast<TCHAR *>(lpData),delims,&next_token2);   //strtok_s會(huì)修改原字符串

while(tokenPtr!=NULL && tokenPtr2!=NULL)
{
CString ss;
if (tokenPtr != NULL)
{
//tokenPtr to int(number)


ss.Format(_T("%s"),tokenPtr);
number = _tcstol(ss,NULL,10);   //其實(shí)可以直接用tokenPtr to number,但是UNICODE時(shí)第一個(gè)為0
if (number > 5000)
{
number -= 5000;
}
tokenPtr=_tcstok_s(NULL,delims,&next_token);
}


if (tokenPtr2 != NULL)
{
//tokenPtr2 to int(number2)
ss.Format(_T("%s"),tokenPtr2);  ss.Trim();
number2 = _tcstol(ss,NULL,10);
if (number2 > 5000)
{
number2 -= 5000;
}
number2 +=number;


//write data to file "szdatfile"
ss.Format(_T("%d  "),number2);
ss.TrimLeft();


//memcpy((TCHAR*)(lpdstData),ss,ss.GetLength());
//_tcscat((TCHAR *)(lpdstData),ss);
m_dstFile.Write(ss,ss.GetLength());


tokenPtr2=_tcstok_s(NULL,delims,&next_token2);
}


}  //end for strtok


m_dstFile.Close();
// m_mmdstfile.Flush();
// m_mmdstfile.UnMap();
// m_mmdstfile.Close();


DeleteFile(szTmpfile);
DeleteFile(szdstTmp);
m_mmfdata.UnMap();
m_mmfdata.Close();


m_mmf.UnMap();
m_mmf.Close();


}
EndWaitCursor();
}



其中CMemMapFile是內(nèi)存映射用封裝的MFC類。。()


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人综合 | 亚洲精品一区二区三区蜜桃久 | 91在线免费视频 | 亚洲婷婷六月天 | 国产资源一区二区三区 | 国产精品国产三级国产播12软件 | 久久精品影视 | 国产一区在线看 | 波多野结衣一区二区三区 | 成人在线免费电影 | 亚洲综合二区 | 欧美成人二区 | 999国产精品视频 | 91网站在线播放 | 精品免费国产一区二区三区四区介绍 | 中文字幕一区在线 | 亚洲精品乱码久久久久v最新版 | 9999国产精品欧美久久久久久 | 97久久精品午夜一区二区 | 丝袜 亚洲 欧美 日韩 综合 | 欧美在线观看一区 | 精品一区二区不卡 | 亚洲一区二区三区四区五区午夜 | 91av视频| 久久精品视频亚洲 | 国产精品免费一区二区三区四区 | 成人aaa视频| 精品国产欧美一区二区三区成人 | 久久久久久精 | 爱爱小视频 | 日日操av | 亚洲国产精品成人久久久 | 91精品久久久久 | 久久国产精品免费一区二区三区 | 亚洲一区 中文字幕 | 国产午夜在线 | 日韩一区二区三区四区五区六区 | 久久不射电影网 | 久久精品一区二区 | 国产高清视频在线播放 | 日日摸日日碰夜夜爽亚洲精品蜜乳 |