CFile与CStdioFile用法

CFile与CStdioFile的文件读写使用方法详解 以下是对CFile与CStdioFile的文件读写使用方法进行了详细的分析介绍,需要的朋友可以过来参考下 立即下载

CFile类:
    //创建/打开文件
    CFile file;
    file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);

        文件打开模式可组合使用,用“|”隔开,常用的有以下几种:
        CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。
        CFile::modeNoTruncate:以追加方式打开,如果文件存在,打开并且不将文件长度置零,如果文件不存在,会抛出异常。一般与CFile::modeCreate一起使用,则文件不存在时,新建一个文件;存在就进行追加操作。
        CFile::modeReadWrite:以读写方式打开文件。
        CFile::modeRead:只读。
        CFile::modeWrite:只写。

    //写入数据
    CString strValue = "Hello World!";
    file.Write(strValue,strValue.GetLength());

    //追加数据
    file.SeekToEnd(); //将指针移至文件末尾进行追加
    file.Write(strValue,strValue.GetLength());

    //关闭文件
    file.Close();

CStdioFile类:
CStdioFile是CFile的派生类,对文件进行流式操作,对于文本文件的读写很有用处,可按行读取写入。

    //写入数据
    CString strValue = "Hello World!";
    file.WriteString(strValue);

    //读取数据
    CString strRead;
    file.ReadString(strRead);

    当文件存在多行数据需要逐行读取时,可用函数BOOL CStdioFile::ReadString(CString& rString),当遇到"\n "时读取截断,如果文件未读完,返回true,否则返回false。

    //逐行读取文件内容,存入strRead
    while(file.ReadString(strRead))
    {
     ...;
    }


各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。
1.文件的查找
当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。
CString strFileTitle;
CFileFind finder;
BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab");
while(bWorking)
{
bWorking=finder.FindNextFile();
strFileTitle=finder.GetFileTitle();
}
2.文件的打开/保存对话框
让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类CFileDialog用于实现这种功能。使用CFileDialog声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。
在构造CFileDialog对象时,如果在参数中指定了OFN_ALLOWMULTISELECT风格,则在此对话框中可以进行多选操作。此时要重点注意为此CFileDialog对象的m_ofn.lpstrFile分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致操作失败。下面这段程序演示了文件打开对话框的使用方法。
CFileDialog mFileDlg(TRUE,NULL,NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
"All Files (*.*)|*.*||",AfxGetMainWnd());
CString str(" ",10000);
mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);
str.ReleaseBuffer();
POSITION mPos=mFileDlg.GetStartPosition();
CString pathName(" ",128);
CFileStatus status;
while(mPos!=NULL)
{
pathName=mFileDlg.GetNextPathName(mPos);
CFile::GetStatus( pathName, status );
}
3.文件的读写
文件的读写非常重要,下面将重点进行介绍。文件读写的最普通的方法是直接使用CFile进行,如文件的读写可以使用下面的方法:
//对文件进行读操作
char sRead[2];
CFile mFile(_T("user.txt"),CFile::modeRead);
if(mFile.GetLength()<2)
return;
mFile.Read(sRead,2);
mFile.Close();
//对文件进行写操作
CFile mFile(_T("user.txt "), CFile::modeWrite|CFile::modeCreate);
mFile.Write(sRead,2);
mFile.Flush();
mFile.Close();
虽然这种方法最为基本,但是它的使用繁琐,而且功能非常简单。我向你推荐的是使用CArchive,它的使用方法简单且功能十分强大。首先还是用CFile声明一个对象,然后用这个对象的指针做参数声明一个CArchive对象,你就可以非常方便地存储各种复杂的数据类型了。它的使用方法见下例。
//对文件进行写操作
CString strTemp;
CFile mFile;
mFile.Open("d:\\dd\\try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
CArchive ar(&mFile,CArchive::store);
ar<< ar.Close();
mFile.Close();
//对文件进行读操作
CFile mFile;
if(mFile.Open("d:\\dd\\try.TRY",CFile::modeRead)==0)
return;
CArchive ar(&mFile,CArchive::load);
ar>>strTemp;
    ar.Close();
mFile.Close();
CArchive的 << 和>> 操作符用于简单数据类型的读写,对于CObject派生类的对象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()还可以进行类的读写,如:
//存储CAboutDlg类
ar.WriteClass(RUNTIME_CLASS(CAboutDlg));
//读取CAboutDlg类
CRuntimeClass* mRunClass=ar.ReadClass();
//使用CAboutDlg类
CObject* pObject=mRunClass->CreateObject();
    ((CDialog* )pObject)->DoModal();
虽然VC提供的文档/视结构中的文档也可进行这些操作,但是不容易理解、使用和管理,因此虽然很多VC入门的书上花费大量篇幅讲述文档/视结构,但我建议你最好不要使用它的文档。关于如何进行文档/视的分离有很多书介绍,包括非常著名的《Visual C++ 技术内幕》。
如果你要进行的文件操作只是简单的读写整行的字符串,我建议你使用CStdioFile,用它来进行此类操作非常方便,如下例。
CStdioFile mFile;
CFileException mExcept;
mFile.Open( "d:\\temp\\aa.bat", CFile::modeWrite, &mExcept);
CString string="I am a string.";
mFile.WriteString(string);
mFile.Close();
4.临时文件的使用

正规软件经常用到临时文件,你经常可以会看到C:\Windows\Temp目录下有大量的扩展名为tmp的文件,这些就是程序运行是建立的临时文件。临时文件的使用方法基本与常规文件一样,只是文件名应该调用函数GetTempFileName()获得。它的第一个参数是建立此临时文件的路径,第二个参数是建立临时文件名的前缀,第四个参数用于得到建立的临时文件名。得到此临时文件名以后,你就可以用它来建立并操作文件了,如:
char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH];
GetTempPath(_MAX_PATH, szTempPath);
GetTempFileName(szTempPath,_T ("my_"),0,szTempfile);
CFile m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite);
char m_char='a';
m_tempFile.Write(&m_char,2);
m_tempFile.Close();
5.文件的复制、删除等
MFC中没有提供直接进行这些操作的功能,因而要使用SDK。SDK中的文件相关函数常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它们的用法很简单,可参考MSDN。

 

1,判断文件是否存在
    access(filename,mode);
2,对于不同用途又不同的文件操作,其中API函数CreateFile()也是比较有用处理方式,对于巨型文件很合适的其他的楼上的大都说了,不重复了.

[1]显示对话框,取得文件名

CString FilePathName;
CFileDialog dlg(TRUE);///TRUE为OPEN对话框,FALSE为S***E AS对话框
if (dlg.DoModal() == IDOK)
    FilePathName=dlg.GetPathName();

相关信息:CFileDialog 用于取文件名的几个成员函数:
假如选择的文件是C:\WINDOWS\TEST.EXE
则(1)GetPathName();取文件名全称,包括完整路径。取回C:\WINDOWS\TEST.EXE
(2)GetFileTitle();取文件全名:TEST.EXE
(3)GetFileName();取回TEST
(4)GetFileExt();取扩展名EXE

[2]打开文件
CFile file("C:\HELLO.TXT",CFile::modeRead);//只读方式打开
//CFile::modeRead可改为 CFile::modeWrite(只写),
//CFile::modeReadWrite(读写),CFile::modeCreate(新建)
例子:
{
CFile file;
file.Open("C:\HELLO.TXT",CFile::modeCreate|Cfile::modeWrite);
.
.
.
}

[3]移动文件指针
file.Seek(100,CFile::begin);///从文件头开始往下移动100字节
file.Seek(-50,CFile::end);///从文件末尾往上移动50字节
file.Seek(-30,CFile::current);///从当前位置往上移动30字节
file.SeekToBegin();///移到文件头
file.SeekToEnd();///移到文件尾

[4]读写文件
读文件:
char buffer[1000];
file.Read(buffer,1000);
写文件:
CString string("自强不息");
file.Write(string,8);

[5]关闭文件
file.Close();

MUSIC算法翻车?Toeplitz矩阵重构如何解决DOA估计中的相干信源难题 本文深入探讨了MUSIC算法在相干信源DOA估计中失效的根本原因,并详细介绍了基于Toeplitz矩阵重构的协方差矩阵修复技术。该方法通过凸优化恢复协方差矩阵的理想结构,有效解决了信号子空间秩亏损问题,从而显著提升了MUSIC算法在相干和多径场景下的分辨精度与稳健性。 阅读详情

相关推荐

一文读懂资管系统里的“清算路径”:钱和券的“导航地图”

简单来说,清算路径就是给每一笔交易预设好的“导航路线”。钱从哪个银行账户出?通过哪家证券公司去买?用哪个股东账户去登记?买回来的股票记在谁的名下?“清算路径”就是把这一连串问题的答案提前配置好。它连接了银行托管户(钱的源头)、券商(交易的中介)和交易所(买卖的市场)。没有配好这条路,交易就无法闭环。清算路径是金融基础设施的缩影。资金如何安全地从银行流向市场;资产如何合法地归属到产品名下;交易数据如何在不同系统间流转。它是资管系统能够日复一日、准确无误地处理亿万级交易的基石。

m0_37607945的博客 236

CStdioFile,CFile类,文本文件处理(MFC学习园地)

CStdioFile继承自CFile,一个CStdioFile 对象代表一个用运行时函数fopen 打开的C 运行时流式文件。     流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。文本方式提供对硬回车—换行符对的特殊处理。当你将一个换行符(0x0A)写入一个文本方式的CStdioFile 对象时,字节对(0x0D,0x0A)被发送给该文件。当你读一个文件时,字节对(0x0D

xuyuefei1988的专栏 9009

Ubuntu双系统引导修复实战:boot-repair工具详解

本文详细介绍了使用boot-repair工具修复Ubuntu双系统引导丢失问题的实战方法。当GRUB引导菜单因安装新系统或更新而损坏时,通过制作Ubuntu启动盘进入Live环境,安装并运行boot-repair,可一键完成系统修复引导,自动化执行GRUB重装与配置,解决无法进入Windows或Ubuntu的常见故障。

weixin_29224589的博客 356

CFile 与 CStdioFile的区别

一. CFile类操作文件默认的是Binary模式,CStdioFile类操作文件默认的是Text模式。 在Binary模式下我们必须输入’\r\n’,才能起到回车换行的效果,’\r’只是回车(回到当前行的第一列),’\n’只是换行(到达下一行的当前列)。 而在Text模式下’\r’的工作是自动完成的,当我们写一个’\n’的时候,系统会自动帮我们在其前面加上一个’\r’,然后保存到文件里。

左雪菲的专栏 1326

基于openEuler配置LAMP,部署WordPress

openEuler 基于OpenEular操作系统部署WordPress,必须包含以下内容: OpenEular的安装与基本配置。 基于SSH远程管理方式开展操作。 部署LAMP环境。 部署WordPress软件。 提供个人网站服务,并通过浏览器测试应用。 简要讲授相关知识与原理。 cd /etc/yum.repos.d 欧拉系统安装后,没有配置yum源,我们需要重新配置。 [root@localhost yum.repos.d]# ls -l 总用量 4 -rw-r--r--

Axiayouqiaomu的博客 6081

手把手教你分析解决Innovus DRC Violation 和Antenna Effect Violation

数字IC后端设计培训教程之手把手教你分析解决Innovus DRC Violation 和Antenna Effect Violation

weixin_37584728的博客 2937

MFC中CFile和CStdioFile的区别

写文本文件开始用CFile类,类型中有CFile::typeText,在relaease模式下运行正常,在debug模式下就会抛异常,说不支持typeText。将类型由CFile改为CStdioFile。

qq_43248127的博客 299

PyCharm配置SSH远程解释器第3步时弹框报错:com.google.gson.stream.MalformedJsonException: Expected value at l...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1928

CFile和CStdioFile的文件读写使用方法

CFile//创建/打开文件CFile file;file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite); 文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文

脑袋不好使 705

把 ABAP ALV 表头做成两层分组:用 TOP-OF-PAGE 手工绘制双行列标题

摘要:本文介绍了在SAP ALV List中实现双层表头的方法。通过关闭系统默认列标题(no_colhead='X'),在TOP_OF_PAGE事件中手动绘制表头,使用sy-uline和sy-vline绘制线条实现分组效果。关键点包括:1)关闭系统表头;2)在事件处理中分两行输出分组标题和字段名;3)利用系统自动拼接线条的特性绘制表格边框。文中还指出了常见问题如线条自动粘连、颜色不生效等,并提供了完整示例代码和详细解释。这种方法适用于需要对字段进行业务分组的报表场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 259

低功耗设计:如何计算power switch的数量?

power switch加多了漏电高,加少了ir drop会有问题,具体加多少合适要如何计算呢?这里可以给一个参考方式。 第一步,先选switch cell的类型 通常选用HVT类型的switch cell,优点是漏电更低,缺点也很明显,电阻大,压降也大,switch cell的大小选择,可以选择(开启电阻x面积)最小的switch cell,即单位面积提供最小并联电阻的cell类型。 第二步,计算数量 选好类型,确定了开启电阻,可以按照如下公式计算数量: Ron/Xnum • W/V = V•P

m0_61544122的博客 3577

MFC中的CStudioFile、CFile

CStdioFile类提供了对标准文件 I/O 操作的封装,包括打开、读取、写入和关闭文件等功能。这个类位于afx.h头文件中,并且通常在进行文件操作时非常有用。以下是CStdioFileCStdioFile读取一行字符串这段代码演示了如何打开一个文本文件(myfile.txt),逐行读取其中的内容并输出到控制台。在实际使用中,你可以根据需要使用不同的打开模式(如或)和其他操作来处理文件。

qq_54901023的博客 771

基于潜在空间分数匹配的混合型表格数据合成方法

然而,在我们的模型中,β 预计会更小,因为我们不需要嵌入的分布精确地遵循标准高斯分布,因为我们还有一个额外的扩散模型。受 Transformer 在表格数据分类/回归任务中取得成功的启发,我们首先为每一列学习一个独特的标记器,然后将标记(列)级表示输入到 Transformer 中,以捕捉列之间错综复杂的关系。在第 4 节中,我们证明了通过这种设计,TABSYN 可以在不到 20 次函数评估(NFE)的情况下生成高质量的合成表格数据,这比其他基于扩散的表格数据合成方法要少得多。是标记器的可学习参数。

步子哥的博客 853

MFC 中 CFile、CStdioFile、CFileDialog 的用法

//读文件数据 void CFileOperDlg::OnButtonRead() { // TODO: Add your control notification handler code here CFile file; CString FileName="data.txt"; char buf[1000];//读1K memset(buf,0,1000);//初始化内存,防止读

SweetLoveFT的专栏 3796

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

CFile 与 CStdioFile、carchive 用法的区别(详细解释)

两者的主要区别: 一. CFile类操作文件默认的是Binary模式,CStdioFile类操作文件默认的是Text模式。     在Binary模式下我们必须输入'\r\n',才能起到回车换行的效果,'\r'只是回车(回到当前行的第一列),'\n'只是换行(到达下一行的当前列)。 而在Text模式下'\r'的工作是自动完成的,当我们写一个'\n'的时候,系统会自动帮我们在其前面加上一个'

记录一些平时工作或者学习中的瞬间 2444

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CFile与CStdioFile的区别

一. CFile类操作文件默认的是Binary模式,CStdioFile类操作文件默认的是Text模式。 在Binary模式下我们必须输入’\r\n’,才能起到回车换行的效果,’\r’只是回车(回到当前行的第一列),’\n’只是换行(到达下一行的当前列)。 而在Text模式下’\r’的工作是自动完成的,当我们写一个’\n’的时候,系统会自动帮我们在其前面加上一个’\r’,然后保存到文件里。

迪迦 • 奥特曼 1015

C/C++文件操作之CStdioFile

CStdioFile类继承了CFile类。不过CStdioFile不支持Duplicate,LockRange,和UnlockRange这三个CFile函数,下面主要介绍CStdioFile的几个特有的函数。 1、构造函数 CStdioFile( LPCTSTR lpszFileName, UINT nOpenFlags ); 功能:打开一个文件 参数:lpszFileName 需要

LL670904816的专栏 2008

cfile与cstdiofile区别

一.CFile类操作文件默认的是Binary模式,CStdioFile类操作文件默认的是Text模式。     在Binary模式下我们必须输入'\r\n',才能起到回车换行的效果,'\r'只是回车(回到当前行的第一列),'\n'只是换行(到达下一行的当前列)。而在Text模式下'\r'的工作是自动完成的,当我们写一个'\n'的时候,系统会自动帮我们在其前面加上一个'\r',然后保存到文件里。另

anbaixiu的博客 679

C++中的fstream/ifstream/ofstream和MFC中的CFile/CStdioFile

在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: #include ofstream //文件写操作 内存写入存储设备 ifstream //文件读操作,存储设备读取到内存中 fst

Invoker's Tower 7084

ABAP模块化编程实战:FORM、FM与RFC选型指南

模块化编程是SAP ABAP开发的核心能力,本质是通过结构化封装提升代码复用性、可维护性与系统集成能力。其原理基于作用域隔离、接口契约与松耦合设计,技术价值体现在降低变更风险、支撑跨事务调用及保障十年生命周期。典型应用场景覆盖FI凭证校验、PP物料需求预测(MD07)、MM采购增强(如KO88)及STO库存转储等全模块业务流程。在工程实践中,FORM适用于本地逻辑解耦,Function Module作为系统级公共API承载复用契约,RFC则解决跨系统集成刚需——三者并非替代关系,而是按耦合度与复用范围递进演

weixin_34008933的博客 370

关于CStdioFile的说明

CStdioFile继承自CFile,一个CStdioFile 对象代表一个用运行时函数fopen 打开的C 运行时流式文件。  流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。文本方式提供对硬回车—换行符对的特殊处理。当你将一个换行符(0x0A)写入一个文本方式的CStdioFile 对象时,字节对(0x0D,0x0A)被发送给该文件。当你读一个文件时,字节对(0x0D,0x

河边杨柳 845

使用CFile,CArchive,CStdioFile,fstream进行文件操作

CFile MFC文件读写的最普通的方法是直接使用CFile进行,如文件的读写可以使用下面的方法:   //对文件进行读操作   char sRead[2];   CFile mFile(_T("user.txt"),CFile::modeRead);   if(mFile.GetLength()<2)   return;   mFile.Read(sRead,2);   mFile.Cl

dreamer323的专栏 908

MFC--CStdioFile类和CFile类的区别

一. CFile类操作文件默认的是Binary模式,CStdioFile类操作文件默认的是Text模式。 在Binary模式下我们必须输入'\r\n',才能起到回车换行的效果,'\r'只是回车(回到当前行的第一列),'\n'只是换行(到达下一行的当前列)。 而在Text模式下'\r'的工作是自动完成的,当我们写一个'\n'的时候,系统会自动帮我们在其前面加上一个'\r',然后保存到文件里

zbird1988的专栏 2194

C++ MFC CFile 文件使用案例 读写文件 图像

一、相关函数原型  1、构造函数的一种 CFile(    LPCTSTR lpszFileName,     //文件名    UINT nOpenFlags           //文件访问模式 ); 2、写入 virtual void Write(    const void* lpBuf,   //指向用户提供的缓冲区,包含将写入文件中的数据    UINT n

iscassucess的专栏 5015

c++文件打开和关闭

一般使用fstream 类中所定义的成员函数 open( )和 close( )。  fstream outfile; 定义一个fstream类的对象  outfile.open("f1.txt", ios::out);  或者 fstream outfile("f1.txt", ios::out);                       in                

lzhw1985的专栏 2万+

Write,writeline,WriteString函数(来自网络,全是粘贴,收集自己用)

Console类中的Write和WriteLine函数都是用来在控制台上输出字符串或含有变量的复合文本。其中,WriteLine函数用于在控制台上输出一行文本,并自动换行;而Write函数输出后不会自动换行。 对于Write和WriteLine函数来说,都可以将各种基本类型的值、对象直接输出到控制台中,且WriteLine函数可以不带参数,直接换行。 【例Ex_Write】控制台输出

LemonTree_123的专栏 4226
上一篇: CFile与CStdioFile区别
下一篇: GetDc与GetWindowDc的含义
ToConnection
博客等级 码龄16年 4粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值