cstdiofile判断文件是否存在|VC++求助!!CStdioFile按行读文件出错

1. C++文件读写问题

myFile.Open(pszFileName,CFile::typeText|CFile::modeCreate|CFile::modeReadWrite) 这句的问题,CFile::modeCreate 每次打开都会重新创建文件,覆盖原来的文件,应该先用IF 语言判断文件是否存在 不存在的话用上面的创建方式打开, 如果存在destfile.Open(DestFilePaht,CFile::modeWrite|CFile::typeBinary);方式打开,然后 destfile.SeekToEnd();

2. CStdioFile::ReadString 读取文本问题

当文件的最后一行数据,正好是128的倍数个字符的时候,用ReadString读取,一定会返回FALSE。但实际上读取是成功的,返回的CString中的数据是正确的!(VC6.0中存在这个Bug,VS2005中,没有这个Bug)解决方法修改一下判断ReadString成功与否的语句:while (csvfile.ReadString(strLine) != FALSE || strLine.GetLength() != 0)在返回FALSE的情况下,CString的长度不为0,就不算读取失败。或者这样:if(!csvfile.ReadString(str) && strLine.GetLength() == 0)在返回FALSE并且CString的长度为0,则算读取失败,否则就是读取成功。

3. 如何判断一个文件是否存在

cstdiofilefiletemp2;if((filetemp2.open(filename,cfile::moderead)==0)){//如果这个文件不存在时messagebox(_t("你选择的文件不存在,请重新选择!"));}后来又发现了另一个方法getfileattributes,可以直接判断文件是否存在,而不用定义变量等,方法如下:if(getfileattributes("c:\\test.bmp")==-1){messagebox(null,_t("文件不存在!"),_t("系统错误"),mb_iconerror);}这个方法很好用,建议使用.

4. 怎么判断cfile文件是否存在

最近的项目是对文件操作的,所以,多少都遇到一些关于文件操作的问题.用到最多的还是文件打开,文件读写,判断文件存在否.本文不讨论文件读写,只针对判断文件存在否.记得在C#里,有一个东西,叫做CFile.通过它的方法CFile.Exit(Filename)就可以直接判断文件是否存在,可是在VC里没有这个方法.最开始时,我是通过定义一个文件变量,然后打开一个那个要判断的文件,如果返回0,就表示这个文件不存在.这种方法需要两步,第一步,先定义一个文件类的变量,第二步,用这个变量直接打开一个文件,查看其返回值,如果为0,就表示不存在.这种方法也还是比较简单的,不过这样会浪费一些资源,而且,如果这个文件存在,那还要在判断完后关闭文件,如果不关闭,可能就会出问题.在VC里,有好几个文件类,看你喜欢哪种就用哪种了.我使用的方法代码如下: CStdioFile fileTemp2; if ((fileTemp2.Open(FileName,CFile::modeRead)==0)) { //如果这个文件不存在时 MessageBox(_T("你选择的文件不存在,请重新选择!")); }后来又发现了另一个方法GetFileAttributes,可以直接判断文件是否存在,而不用定义变量等,方法如下:if(GetFileAttributes("C://Test.bmp") == -1){ MessageBox(NULL,_T("文件不存在!"),_T("系统错误"),MB_ICONERROR);}这个方法很好用,建议使用.当然还在其它的方法,我也没试用,因为,好东西有一个就可以了,不过,如果以上的方法不能满足你的要求时,还是可以试下以下的方法(我没有测试,网上找):<1>: CFileFind find;BOOL IsFinded = find.FindFile("C://Test.bmp");if(IsFinded){//存在}else{//不存在}用CFileFind类的FindFile()和FindNextFile函数进行查找,如果搜索完C:/还未找到,就是文件不存在.函数具体用法请参考msdn<2>: 1、BOOL PathFileExists(LPCTSTR lpszPath); SHELL API2、DWORD GetFileAttributes(LPCTSTR lpFileName); API<3>: 1.CFileFind f; (这个就是上面第一种方法)if (f.FindFile(g_szCalFileName,0)){ // 做你的处理}else{ MessageBox("File Not Exsit!","提示",MB_OK+MB_ICONINFORMATION); return;}2.如果要打开文件,可以顺便:CFile file;if(!file.Open(filepath,CFile::modeRead))MessageBox("error");else{file.Close();return;}

5. CStdioFile 怎样查找

while(!feof(fp)) { } ,UGdFHw

6. 如何使用CStdioFile:ReadString来读文件

一数据文件一行一条记录,我用file.readstring()一次读一行,并对读取的数据做一些处理;请问:while(文件还没到结尾){file.readstring();…}while()中不用另加判断条件了,因为CStdioFile::ReadString()本身就是判断标志,若没有了(文件到头)返回NULL,因此:while(file.ReadString(s)){}就可.[程序实现]假设你已有了名为ts.txt的文件在你的工程目录下:{CStdioFile file;CString sss;char ccc[100];DWORD o=0;int ol=0;file.Open("ts.txt",CFile::modeRead);while(file.ReadString(sss)){ol++;if(ol>1)//读两次就不读了.break;}o=file.GetPosition();//记录上次的结果(读到哪了)……………..file.Seek(o,0);//接着上回读while(file.ReadString(sss)){strcpy(ccc,sss);AfxMessageBox(ccc);}}

7. mfc中 CStdioFile 读文件问题

CFile::modeCreate若文件不存在,则创建新文件;若该文件已存在,则引发 CFileException。CFile::modeNoTruncate若文件不存在,则创建新文件;否则,如果该文件已存在,则将其附加到 CFile 对象。用下面这个代替modeCreate

8. VC++中如何循环读取TXT文件的每一行内容

可以试试cstdiofile类使用cstdiofile的readstring方法可以一次读取一行,如果前面无用数据的长度是固定的,读取一行后可以再读取第i个字符后的字符串,就可以获得你所需要的数据了,或者使用afxextractsubstring来获得用空格分隔的字符串的某个位置的数据读取多个文件的话可以用一个循环来读取,读取前先用getstatus方法来判断文件是否存在。

9. VC++求助!!CStdioFile按行读文件出错

目测上述代码没有发现什么问题,建议按照如下方式来调试。在while循环内部的“strText += szLine;”打上断点,单步执行时,监视strText的值。 /////////////////////////////////////////////////////////////////////刚才试验了一下,在一个按钮的单击响应函数里面写了如下代码:void CFileTestDlg::OnTestfile() { // TODO: Add your control notification handler code here CString strText = ""; CString szLine = ""; //打开文件 CStdioFile file; if (!file.Open("test.txt",CFile::modeRead)) { AfxMessageBox("无法打开文件!"); return; } //逐行读取字符串 while( file.ReadString( szLine ) ) { strText += szLine; } file.Close(); AfxMessageBox(strText);}/////////////////////////////////////////////////////////////////////结果:AfxMessageBox能够读出文本中的内容。至于你为什么读不出内容,我想,可能有以下几个原因。1.代码中缺少是否打开文件的判断,有可能打开文件失败。2.注意此处待读文件的路径为相对路径,txt文件需要放在工程目录下面。请设置断点后,单步调试确认。

10. CFile 或是CStdioFile 类,打开文件的模式只写,其他进程只读,该设置那个宏;

组合使用:modeCreate|CFile::modeWrite|CFile::modeNoTruncate


赞 (0)