⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12.4.2 文件的写入.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 TXT
字号:
12.4.2 文件的写入 
Win32API提供的WriteFile函数可以向一个文件中写入数据,并可以指定是以同步还是异步方式来完
成写入操作。该函数的声明形式如下所示: 
BOOL WriteFile ( 
HANDLE hFile , 
LPCVOID lpBuffer , 
DWORD nNumberOfBytesToWrite , 
LPDWORD lpNumberOfBytesWritten , 
LPOVERLAPPED lpOverlapped 

WriteFile函数各个参数的含义如下所述: 
. hFile 
指定要写入数据的文件的句柄。 
. IpBuffer 
指向包含将要写入文件的数据的缓冲区的指针。 
. nNumberOfBytesToWrite 
指明要向文件中写入的字节数。 
. lpNumberOfBytesWritten 
用来接收实际写入到文件中的字节数。 
. IpOverlapped 
指向OVERLAPPED结构体的指针。读者应注意,这个参数如果想要起作用,那么在
利用 CreateFile打开文件设置文件属性时需要添加 FILE_FLAG_OVERLAPPED标记,告诉系统需要异
步地访问这个文件。如果没有设置这个标记,在默认情况下就是以同步 10的方式访问这个文件。所
谓同步,是指在写入时,却果没有完整地写入数据,或者在读取数据时,没有读完时,程序将被挂
起,直到数据写入或读取完毕,程序才能继续运行。如果设置了 FILE_FLAG_OVERLAPPED这个标记,
也就是设置了异步 10方式,在调用读写函数时,将会告诉系统不必等到 10结束,函数调用会立即
返回,操作系统会使用它的线程为我们完成 10操作,当操作系统完成 10操作时,应用程序会得到
相应的通知。
下面,我们在 File程序中利用 Win32 API提供的 CreateFile函数打开,或者说是创建一个文件,
然后利用 WriteFile函数写入一些数据。首先将 CFileView类的 OnFileWrite函数中己有代码注释
起来,然后添加如例 12-16所示的代码。 
例 12-16 

void CFileView::OnFileWrite() 
//定义一个句柄变量 
HANDLE hFile; 
//创建文件
hFile=CreateFile("5.txt", GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
//接收实际写入的字节数 
DWORD dwWrites; 
//写入数据 
WriteFile (hFile, "http://www. sW1Xin.org" , strlen ("http://www. sW1Xin.org") , &dwWrites , 
NULL); 
//关闭文件句柄 
CloseHandle(hFile); 
在上述例 12-16所示代码中,调用 CreateFi1e函数创建文件: 5.txt,因为要进行写入操作,所以
访问方式设置为: GENERIC_WRITE;共享方式参数设置为 0.表明该对象不能被共享:第四个参数设置
为 NULL.让我们创建的这个文件对象使用默认的安全属性:第五个参数,即文件的创建方式设置为 CREATE_NEW创建一个新文件,如果指定的文件己经存在,则该函数调用将失败:第六个参数,即文
件属性设置为 FILE_ATIRmUTE_ NORMAL;最后一个参数,即模板文件的句柄设置为 NULL。
接下来,调用 WriteFile函数向文件中写入字符串数据: http://www.sunxin.o哩。对于该函数的最
后一个参数,即指向 OVERLAPPED结构体的指针,因为在打开文件时并没有指定 
FILE_FLAG_OVERLAPPED标记,也就是使用默认的同步 10方式,所以在调用 WriteFile时,可以将此
参数设置为 NULL。
运行 File程序,单击【文件操作\写入文件】菜单项,然后打开 File程序所在目录下的 5.txt文件,
可以看到其中的数据就是程序中写入的宇符串: http://www.sunxin.o哩,说明写入操作成功了。 
. 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -