VC++下的文件操作.docx
《VC++下的文件操作.docx》由会员分享,可在线阅读,更多相关《VC++下的文件操作.docx(10页珍藏版)》请在冰豆网上搜索。
![VC++下的文件操作.docx](https://file1.bdocx.com/fileroot1/2023-7/5/a1477423-cc99-4662-b1c8-7cc6fb9a0748/a1477423-cc99-4662-b1c8-7cc6fb9a07481.gif)
VC++下的文件操作
C语言文件操作函数
头文件
//打开文件
FILE*fopen(constchar*filename,constchar*mode);
参数说明:
filename文件名,支持当前路径和全路径。
注:
反斜杠要使用转义字符\->\\
mode文件打开方式:
//关闭文件
fclose(FILE*);
//读写字符
intfputc(intc,FILE*stream);
intfgetc(FILE*stream);
注:
读写成功则返回字符,失败则返回EOF(即-1)
//读写字串
//格式化IO
fprintf(fp,格式串,输出变量列表);
fscanf(fp,格式串,输入变量地址表列);
以上各读写函数适用于文本文件
//二进制文件读写,结构体(块)读写
size_tfread(void*buf,size_tsize,size_tcount,FILE*stream);
size_tfwrite(constvoid*buf,size_tsize,size_tcount,FILE*stream);
参数说明:
buf数据块指针,可以是结构体
size一次读写的单位字节的倍数
count指定size的个数,即读写数据量为count*size(B)
stream文件指针
//文件定位
voidrewind(FILE*fp);//返回文件开头
intfseek(FILE*fp,longoffset,longorigin);//一般用于二进制文件
参数说明:
offset偏移量,单位:
字节
origin(偏移量的)起始点,有值
//取得文件当前位置(相对于文件开头)
longftell(FILE*fp);//若不存在文件,返回-1
//判结束
feof(FILE*fp);//若结束返回非零值
VC++6.0MFC提供的CFile类
其中,CSocketFile操作内存文件,CStudioFile操作文本文件。
注:
各种非互斥参数可以通过“|”连结起来。
部分成员函数
//打开文件
virtualBOOLOpen(LPCTSTRlpszFileName,UINTnOpenFlags,CFileException*pError=NULL);
CFileException为文件异常类,pError->m_cause为错误码(异常原因),pError->m_sttrFileName为异常文件名,pError->m_IOsError为系统I/O异常原因。
//关闭文件,删除对象
voidClose();
//关闭文件,忽略警告和错误
voidAbort();
//I/O方法
virtualUINTRead(void*buf,UINTcount);throw(CFileException);
virtualUINTWrite(void*buf,UINTcount);throw(CFileException);
参数说明:
buf进行读写数据块(可以是结构体和类)的指针
count读写字节数
//文件定位
virtualLONGSeek(LONGIOff,UINTnForm);throw(CFileException);
参数说明:
IOff(相对于nForm的)偏移量(单位:
字节)
nForm有值:
CFile:
:
begin\CFile:
:
current\CFile:
:
end.
voidSeekToBegin();throw(CFileException);
DWORDSeekToEnd();throw(CFileException);
//获取文件当前位置
virtualDWORDGetPosition()const;throw(CFileException);
//文件状态操作
BOOLGetStatus(CFileStatus&rStatus)const;
staticBOOLPASCALGetStatus(LPCTSTRlpszFileName,
CFileStatus&rStatus);
staticvoidSetStatus(LPCTSTRlpszFileName,constCFileStatus&rStatus);throw(CFileException);
参数说明:
rStatus为CFileStatus的引用。
CFileStatus的以下成员:
CTimem_ctime文件创建时间
CTimem_mtime文件最后更改时间
CTimem_atime文件最近访问时间
LONGm_size文件逻辑大小,单位:
字节
BYTEm_attribute文件属性
有值:
32(非只读,非隐藏)、33(只读,非隐藏)、34(非只读,隐藏)、35(只读,隐藏)
charm_szFullName[MAX_PATH]文件全路径名(含文件名)
文件查找类CFileFind
部分成员函数:
//判文件是否存在
virtualBOOLFindFile(LPCTSTRname,DWORDdwUnused=0);
参数说明:
name指定要查找的文件,可以用过滤器(如"*.*")
dwUnused系统保留,必须为0
//移判下一个文件是否存在
virtualBOOLFindNextFile();
注:
该函数与FindFile配对使用,调用该函数后将最近的FindFile要查找的文件句柄传给FindFile对象.
//判断是否是目录
BOOLIsDirectory();
//判断是否是“.或..”目录
BOOLIsDots();
//获取文件名
CStringGetFileName();
CStringGetFileTitle();
//获取文件(全)路径
CStringGetFilePath();
API文件操作函数(直接使用)
//文件复制
BOOLCopyFile(
LPCTSTRlpExistingFileName,//指定现有文件名
LPCTSTRlpNewFileName,//指定新文件名
BOOLbFaillfExits,//如果新文件存在则指定操作方式(false强制覆盖)
);
//创建目录
BOOLCreateDirectory(
LPCTSTRlpPathName;//要创建的目录路径
NULL//第二参数不理解,一般为NULL
);
//获取当前路径
TCHARpath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
//删除文件
BOOLDeleteFile(LPCTSTRlpFileName);
//重命名文件或目录
BOOLMoveFile(LPCTSTRlpExistingFileName,LPCTSTRlpNewFileName);
//文件删除到回收站
IntSHFileOperation(
LPSHFILEOPSTRUCTlpFileOp;//指向LPSHFILEOPSTRUCT结构
);
参数说明:
lpFileOp为指向SHFILEOPSTRUCT结构的指针,即LPSHFILEOPSTRUCT为
SHFILEOPSTRUCT的指针类型。
SHFILEOPSTRUCT的成员变量:
HWNDhWnd
窗口句柄,一般为NULL
UINTwFunc
操作类型,如FO_DELETE、FO_MOVE(移动)
LPCSTRpFrom
源文件名
LPCSTRpTo
目标文件名
FILEOP_FLAGSfFlags
操作标记
BOOLfAnyOperationsAborted
操作选择位,一般不管
LPVOIDhNameMappings
文件映射,一般为NULL
LPCSTRlpszProgressTitle
文件操作进度窗口标题
注:
pFrom与pTo指向的字符缓冲区末尾要含2个以上的'\0'。
fFlags的各种操作标记
FOF_FILESONLY
只操作文件
FOF_ALLOWUNDO
允许从回收站恢复文件
FOF_NOCONFIRMATION
目标文件存在时不进行覆盖确认
FOF_NOERRORUI
不显示错误提示
FOF_RENAMEONCOLLISION
存在文件名冲突时重命名
FOF_SILENT
不显示进度对话框
FOF_WANTMAPPINGHANDLE
要求返回处于操作状态的实际文件列表