当前位置: 首页 > news >正文

罗琳做的网站电商网页制作教程

罗琳做的网站,电商网页制作教程,上海房屋装修公司实力排名,主题巴巴WordPress主题后门CFile类 信息源自官方文档:https://learn.microsoft.com/zh-cn/cpp/mfc/reference/cfile-class?viewmsvc-170。 CFile是Microsoft 基础类文件类的基类。它直接提供非缓冲的二进制磁盘输入/输出设备,并直接地通过派生类支持文本文件和内存文件。CFile与…

CFile类

信息源自官方文档:https://learn.microsoft.com/zh-cn/cpp/mfc/reference/cfile-class?view=msvc-170。

CFile是Microsoft 基础类文件类的基类。它直接提供非缓冲的二进制磁盘输入/输出设备,并直接地通过派生类支持文本文件和内存文件。CFile与CArchive类共同使用,支持MFC对象的串行化。

CFile采用API函数做内核:

1.Open()

virtual BOOL Open(LPCTSTR lpszFileName,UINT nOpenFlags,CFileException* pError = NULL);virtual BOOL Open(LPCTSTR lpszFileName,UINT nOpenFlags,CAtlTransactionManager* pTM,CFileException* pError = NULL);

a. lpszFileName
一个包含所需文件的路径的字符串。 该路径可以是相对路径、绝对路径或网络名称 (UNC)。

b.nOpenFlags
用于定义文件的共享和访问模式的 UINT。 它指定打开文件时要执行的操作。 可以使用按位“或”(|) 运算符来组合选项。 一个访问权限和一个共享选项是必需的;modeCreate 和 modeNoInherit 模式是可选的。 有关模式选项的列表,请参阅 CFile 构造函数。

c.pError
指向接收失败操作状态的现有文件异常对象的指针。

d.pTM
指向 CAtlTransactionManager 对象的指针

这里附带说一下,我们在Windows文件中常会看见一种叫文件句柄的东西,其定义如下:

在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。要从文件中读取一块数据,应用程序需要调用函数ReadFile,并将文件句柄在内存中的地址和要拷贝的字节数传送给操作系统。当完成任务后,再通过调用系统函数来关闭该文件。

这里常见的参数其实就第一和第二个参数,你有路径,有打开方式,打开一个文件就不是问题。

打开方式(nOpenFlags):

CFile::modeCreate 文件以创建形式打开(创建一个新的文件,老文件数据将会丢失 ,可以配合CFile::modeNoTruncate 一起使用,不会覆盖老文件)CFile::modeRead  采用读取方式打开文件CFile::modeWrite 采用写入方式打开文件CFile::modeReadWrite 采用读写方式打开文件CFile::modeNoTruncate 采用不截断形式打开文件(与CFile::modeCreate配合使用在文件存在的情况下不会创建新的文件, 与CFile::modeWrite配合使用在文件有数据的情况下写入数据不会清空文件数据(会存在数据覆盖现象,下面会讲文件写入位置设置方法))CFile::modeNoInherit 防止这个将要被打开的文件来源于子进程(实际几乎用不到)CFile::typeBinary 文件数据将会以二进制的形式显示CFile::shareDenyNone 采用共享形式打开文件(这个文件在不做读写的情况下打开)函数内部调用API:
CreateFile(lpszFileName, dwAccess, dwShareMode, &sa, dwCreateFlag, dwFlags, NULL);

2.GetLength()

int nlen = file_.GetLength();
//获取文件的当前总长度(读或写文件时可以随时调用函数查看文件的长度)方法函数内部调用API:
GetFileSize(m_hFile, &liSize.HighPart);

3.Read()

char GetStr[4096] = {0};
file_.Read(GetStr,4096);
//读取文件(串口)方法 函数内部调用API:
ReadFile(m_hFile, lpBuf, nCount, &dwRead, NULL);
//内部采用同步读取方式(在串口读取方面我更喜欢异步方式,相关参考我的API串口异步文章)

在官方文档中描述为:

virtual UINT Read(void* lpBuf,UINT nCount);

4.Write()

char GetStr[4096] = {0};
memcpy(GetStr,"123yui",sizeof(char) * 6);
file_.Write(GetStr,4096);
//写入文件(串口)方法 函数内部调用API:
WriteFile(m_hFile, lpBuf, nCount, &nWritten, NULL);

5.Close()

file_.Close();
//文件关闭方法(不需要操作这个打开文件时随手释放文件句柄)函数内部调用API:
CloseHandle(m_hFile);

这里如果都是内部使用的话,全部都是基于C的。没有UNICODE编码,情况会比较简单。当我们需要用到MFC问题时,会引入宽字符的CString变量,此时使用CStdioFile这个子类会更好。

CStdioFile类

信息源自官方文档:https://learn.microsoft.com/zh-cn/cpp/mfc/reference/cstdiofile-class?view=msvc-170。

它时CFile的子类,比较关键的是它对READ、SEEK、WRITE这三个函数进行了重写。

它可以执行readstring函数,直接提取出LPTSTR类型的CString来。

virtual LPTSTR ReadString(LPTSTR lpsz,UINT nMax);virtual BOOL ReadString(CString& rString);

这里的读取是一行一行的读,比起CFile来说就灵活的多了。

实战案例

我们准备如下MFC程序:

在这里插入图片描述

准备如此一个CSV文件:

在这里插入图片描述

在HIT按钮下添加如下指令

void CMFCCSVLABDlg::OnBnClickedHit()
{// TODO: 在此添加控件通知处理程序代码CFile file;file.Open(_T("./test.csv"), CFile::modeRead);char buf[1024];file.Read(buf,1024);CString str(buf);MessageBox(str,_T("str"));file.Close();CStdioFile CSFile;CSFile.Open(_T("./test.csv"), CFile::modeRead);CString C_buf_1;CSFile.ReadString(C_buf_1);MessageBox(C_buf_1, _T("C_buf_1"));CString C_buf_2;CSFile.ReadString(C_buf_2);MessageBox(C_buf_2, _T("C_buf_2"));CSFile.Close();
}

可以看到把两种不同的读取方式都试过了,实际的结果为:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

可以看到结论已经很清晰了。怎么样读取数据,就这么简单。

http://www.hkea.cn/news/595732/

相关文章:

  • 芜湖做网站公司广州seo好找工作吗
  • 做网站找客户百度竞价推广公司
  • 深圳网站建设怎么办互联网营销的优势
  • 课程网站开发背景网站推广的几种方法
  • 商城网站建设模板一份完整的营销策划方案
  • 推广网站建设网站权重查询工具
  • t型布局网站怎么做建设网官方网站
  • 哪个建设网站推广竞价托管公司
  • 网站建设傲seo网站是什么意思
  • 卢氏住房和城乡建设厅网站聚名网
  • 山东网站建设电话长沙靠谱的关键词优化
  • 山东营销型网站ip网站查询服务器
  • 什么网站上做奥数题企业培训课程清单
  • 龙岩优化seo是什么意思
  • 外贸网站建设源码软文怎么做
  • 文章列表页wordpress宁波seo资源
  • 获取网站访客qq 原理百度投诉中心人工电话
  • 企业网站制作查询百度电话怎么转人工
  • 杭州专业网站建设怎样创建网站
  • 网站建设报价表格式淘宝关键词优化技巧
  • 高端网站建设系统百度网盘登录入口官网
  • ps做网站顶部江苏网络推广公司
  • 源码做网站手机网站百度关键词排名
  • 网站关键词分隔网站链接提交
  • 福永营销型网站多少钱中国最新消息今天
  • 做网站4000-262-263网站排名优化软件有哪些
  • 网站双链接怎么做网络舆情监测平台
  • 企业网站建设制作百度网盘下载app
  • asp做一个简单网站网络营销就是seo正确吗
  • 移动wap站点公司网站设计图