文件读写的最普通的方法是直接使用CFile进行,如文件的读写可以使用下面的方法:
//对文件进行读 *** 作
char sRead[2];
CFile mFile(_T("usertxt"),CFile::modeRead);
if(mFileGetLength()<2)
return;
mFileRead(sRead,2);
mFileClose();
//对文件进行写 *** 作
CFile mFile(_T("usertxt "), CFile::modeWrite|CFile::modeCreate);
mFileWrite(sRead,2);
mFileFlush();
mFileClose();
虽然这种方法最为基本,但是它的使用繁琐,而且功能非常简单。我向你推荐的是使用CArchive,它的使用方法简单且功能十分强大。首先还是用CFile声明一个对象,然后用这个对象的指针做参数声明一个CArchive对象,你就可以非常方便地存储各种复杂的数据类型了。它的使用方法见下例。
//对文件进行写 *** 作
CString strTemp;
CFile mFile;
mFileOpen("d:\\dd\\tryTRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
CArchive ar(&mFile,CArchive::store);
ar<<arClose();
mFileClose();
//对文件进行读 *** 作
CFile mFile;
if(mFileOpen("d:\\dd\\tryTRY",CFile::modeRead)==0)
return;
CArchive ar(&mFile,CArchive::load);
ar>>strTemp;
arClose();
mFileClose();
CArchive的 << 和>> *** 作符用于简单数据类型的读写,对于CObject派生类的对象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()还可以进行类的读写,如:
//存储CAboutDlg类
arWriteClass(RUNTIME_CLASS(CAboutDlg));
//读取CAboutDlg类
CRuntimeClass mRunClass=arReadClass();
//使用CAboutDlg类
CObject pObject=mRunClass->CreateObject();
((CDialog )pObject)->DoModal();
如果你要进行的文件 *** 作只是简单的读写整行的字符串,我建议你使用CStdioFile,用它来进行此类 *** 作非常方便,如下例。
CStdioFile mFile;
CFileException mExcept;
mFileOpen( "d:\\temp\\aabat", CFile::modeWrite, &mExcept);
CString string="I am a string";
mFileWriteString(string);
mFileClose();
追加到原有txt文件尾
mFileOpen(temptxt,CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
if(mFile==NULL)
return false;
mFileSeekToEnd();
mFileWriteString(s);
fileClose();
添加一个打开文件对话框,用CFileDialog类;用CFile类,在构造时指定读取方式(
CFile::typeBinary Sets binary mode (used in derived classes only)
),不过得从CFile派生一个类
FILE fHexFile;
fHexFile = fopen(cstrFilePath, "rb");
DWORD result = fread (&b,sizeof(byte ),1,fHexFile);
遍历当前文件夹查找jpg的文件,jpg表示类型为jpg类型的文件,每找到一个把变量计数器给加1啊,给你个遍历文件夹,找jpg类型文件,具体你自己的使用还要小修改,
void CXXXDlg::SearchFiles(CString strMusicFolder)
{
CFileFind ff;
strMusicFolder += _T("\\");
strMusicFolder += _T("");
BOOL res = ffFindFile(strMusicFolder);
while (res)
{
res = ffFindNextFile();
if (!ffIsDirectory() && !ffIsDots())
{
afxMessageBox(ffGetFilePath());
}
}
ffClose();
}
txt文件里面寸的是字符,因此读出后需要转换为double型数据后才能保存
PtrArray是存储地址的,需要存储每个double型的数据地址时,保存数据的地址保存进去就是了。也许你会问,那在哪里获取数据地址。回答是,每次读进数据的时候先给每一个数据在内存开辟内存,一般用new分配,保存数据到这个内存后,把
new得来的地址保存到PtrArray里面就可以了。
先用Find函数打到位置
void GetStrs(CString str,const char ch/分隔符/,CStringArray& strs)
{
strReplace(" "," ");
strsRemoveAll();
int iPos = strFind(ch);
while(-1 != iPos )
{
CString s = strLeft(iPos);
sTrimLeft();
sTrimRight();
if( !sIsEmpty())
strsAdd(s);
str = strMid(iPos+1);
iPos = strFind(ch);
}
strTrimLeft();
strTrimRight();
if( !strIsEmpty())
strsAdd(str);
}
void CDlg20130527Dlg::OnButton4()
{
CStringArray strs;
GetStrs("1 123 10 BYYLL 23 150",' ',strs);
参考一下
以上就是关于MFC 读取文件函数全部的内容,包括:MFC 读取文件函数、MFC中二进制方式读取文件的方法、MFC 获取文件的BYTE[]等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)