文件I/O:CFile、CFileFind

2023-10-24 15:04
文章标签 cfile cfilefind

本文主要是介绍文件I/O:CFile、CFileFind,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、写入文件

CString szFilePath = _T("F:\A.txt");
FILE *fpFile;//定义一个文件
if(_tfopen_s(&fpFile, szFilePath, _T("w")) == 0)//以“写入”方式打开文件
{_ftprintf(fpFile, _T("写入的内容"));//写入内容fclose(fpFile);//关闭文件
} 

2、读取文件

FILE *fpFile;
if(_tfopen_s(&fpFile, szFilePath, _T("r")) ==0)
{TCHAR cBuf[256];TCHAR *cpValue;do{cpValue = _fgetts(cBuf, 255, fpFile);//处理}while(NULL != cpValue && feof(fpFile) == 0);fclose(fpFile);
}

3、追加文件

FILE *fpFile;
if(_tfopen_s(&fpFile, szFilePath, _T("a")) ==0)
{fseek(fpFile, 0, SEEK_END);if(ftell(fpFile) == 0)_ftprintf(fpFile, _T("追加内容"));_ftprintf(fpFile, _T("追加内容"));fclose(fpFile);
}

其中:

int fseek(FILE *stream, long offset, int fromwhere);
功 能: 重定位流上的文件指针
描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字 节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值: 成功,返回0,否则返回其他值。

第一个参数:stream为文件指针
第二个参数:offset为偏移量,整数表示正向偏移,负数表示负向偏移
第三个参数:fromwhere设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
            SEEK_SET: 文件开头
            SEEK_CUR: 当前位置
            SEEK_END: 文件结尾
            其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.
    
    其中的含义如下:
            SEEK_SET:The offset is set to offset bytes.(就是设置到offset位置);
            SEEK_CUR:The offset is set to its current location plus offset bytes.(是设置到offset位置加上当前位置);
            SEEK_END:The offset is set to the size of the file plus offset bytes.(是设置到offset位置加上文件大小);

4、CFileFind:本地文件查找

CFileFind fileFind;
CString szFileName = _T("");
if(TRUE == fileFind.FindFile(_T("*_Filter.csv")))
{BOOL bExistNext;do{bExistNext = fileFind.FindNextFile();szFileName = fileFind.GetFileName();CString szFilePath = fileFind.GetFilePath();if (fileFind.IsDots() == FALSE)//如果不是目录{if (TRUE == fileFind.IsDirectory())//如果是文件夹{}elseDeleteFile(szFilePath);//删除文件}}while(bExistNext);
}

这篇关于文件I/O:CFile、CFileFind的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/275983

相关文章

MFC工控项目实例之六CFile添加菜单栏

本程序基于前期我的博客文章《MFC工控项目实例之五CFile类读写系统参数》 添加两个对话框如下 具体添加菜单栏参考我的博客文章MFC_ CFile类实现下拉菜单读写实例(源码下载) 这里给出相关代码 在 SEAL_PRESSURE.h文件中添加 #include <afxtempl.h>...class CProductPara{public:union{struct{char

MFC工控项目实例之五CFile类读写系统参数

承接专栏《MFC工控项目实例之四在调试目录下创建指定文件夹》 实时保存输入的iPlotX坐标轴最小值、最大值到CFG.PAR文件,打开界面从CFG.PAR文件中实时读取保存的最小值、最大值在编辑框中显示。 1、SEAL_PRESSURE.h中添加代码 class CSEAL_PRESSUREApp : public CWinApp{public:...CString m_CFGFileNam

一个CFile::Remove引起的奇怪问题

今天收到测试的一个反馈,我们的一个程序,在WIN7、WIN8下安装后,运行不起来,在进程列表中可以看到,但就是不出来窗口,同样的程序在XP下正常,在UAC关闭的情况下也正常,在以管理员权限运行时也正常。 现象有点奇怪,但也有一个规律,就是在UAC开启的情况下,如果不是以管理员权限运行,则会出问题,根据程序现象,我从代码上排查,发现就在程序启动的代码部分即“挂起”,这里的现象类似于挂起,因为是程序

CFileFind类

CFileFind类的使用总结 2007-7-7 1、CFileFind类的声明文件保存在afx.h头文件中。 2、该类的实现的功能:执行本地文件的查找(查找某个具体的文件,查找某类文件x*.x*,查找所有文件*.*) 3、CFileFind类是CGopherFileFind和CFtpFileFind类的基类。 4、CFileFind类的构造函数::CFileFind()和关闭函数::Close

VS2008 用CFile对象读取Unicode文本。

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 1新建一个记事本文件,输入字符串"0123456789" 文本编码格式是"ANSI" 我们用UltraEdit软件打开它,用十六进制模式显示(或者

error C2039: ‘ReadHuge’ : is not a member of ‘CFile

转自VC错误:http://www.vcerror.com/?p=1559 问题描述: 在把VC6.0 工程转到VS2005工程中遇到下面的问题: error C2039: ‘ReadHuge’ : is not a member of ‘CFile 解决方法: 具体的解决方法参考文章:http://www.vcerror.com/?p=1559

【MFC】CFile 之 CFile::modeNoTruncate参数的用法

MFC编程时,经常需要用如下方式操作文件:打开某一个文件,如果存在则追加,如果不存在则创建。 查看MSDN帮助文件,CFile类中CFile::modeNoTruncate参数具备该功能,该参数一般与CFile::modeCreate参数配合使用。 CFile::modeNoTruncate        该值一般modeCreate组合使用。如果创建的文件已经存在,那么它不会被清零。因而该文

error C2039: “ReadHuge”: 不是“CFile”的成员

CFile的函数 在VS中   ReadHuge()改为Read() WriteHuge()改为Write()

CFile::modeNoTruncate 参数详细说明

MSDN上说到: CFile::modeNoTruncate Combine this value with modeCreate. If the file being created already exists, it is not truncated to 0 length. Thus the file is guaranteed to open, either as a newly

VC中使用CFile正确的追加写中文数据到文件不出现乱码-unicode字符集

CFile saveFile; CString file_name = getFileName(); BOOL isOpenOK = saveFile.Open(file_name, CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate, NULL); if (false == isOpenOK)