想一行行讀取數據,並且我希望是從第二行開始讀取,即第一行的跳過去。
於是我用了ReadString(),並且打開文件後先讀取第一行,但是不保存第一行的數據,然後從第二行開始儲存數據,代碼如下:
void RichEditView::ReadArticle(CString strName)
{
CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();
CString content = "";
CStdioFile File;
CString fileName = strName;
if (File.Open(fileName, CFile::modeRead | CFile::typeBinary))
{
File.SeekToBegin();
CString str = "";
File.ReadString(str); // 讀取第一行,不保存
while (File.ReadString(str)) //從第二行開始逐行讀取
{
content += str;
AfxMessageBox(str);
}
File.Close();
}
else
AfxMessageBox("讀取失敗!");
::SetWindowText(this->GetRichEditCtrl().m_hWnd, content);
}
運行正常的,正常讀取出來,但是我讀取完打開文件發現文本內容被改了。。
見圖:
原本的數據
讀取並顯示(第一行和第二行是兩個視圖在顯示)
之後打開文本發現數據變了
再次讀取顯示也出問題了
於是我把讀取第一行的那個
File.ReadString(str); // 讀取第一行,不保存
語句注釋掉,再重復上面的操作,一切正常,但是這顯然不是我要的效果,
而且我發現貌似讀取一次後,第二次讀取顯示的第一行是原來顯示的第二行(即tttttt)
困惑很久了。究竟是哪裡錯了。。。
這段代碼的確沒有修改文件,但是你有沒有別的地方寫了文件。打開文件什麼也不做,在任務管理器強行關閉,看看會改文件麼