Windows文件操作
来源:互联网 发布:xperia touch 知乎 编辑:程序博客网 时间:2024/06/10 00:09
文件操作的主要API函数:
1、打开文件
HANDLE WINAPI CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);参数说明:
lpFIleName:要打开的或者创建的文件名,也可以不是文件名,可以是管道名;
dwDesiredAccess:对文件的访问模式,通常是GENERIC_READ和GENERIC_WRITE;
dwShareMode:对文件的访问模式,windows是一个多进程的操作系统,在一个文件杯访问时,可能有另一个进程也访问文件,这时第一个打开文件的进程就要对其设置一个访问模式,即打开文件后,其他进程可对文件有哪些操作;
lpSecurityAttribute:安全属性,一般为NULL;
dwCreationDisposition:在创建文件时文件存在或者不存在时该函数的处理方式;
dwFlagsAndAttribute:打开或创建文件时的标志和属性,一般是FILE_ATTRIBUTE_NORMAL;
hTemplateFile:文件模板,一般为NULL;
返回值:
若执行成功,返回一个文件句柄;
2、在对文件使用完毕之后,应该对打开的句柄进行关闭以释放资源
BOOL CloseHandle(HANDEL hObject);3、删除文件
BOOL DeleteFile(LPCTSTR lpFileName); //file name4、读取文件
BOOL ReadFile( HANDLE fFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, DWORD nNumberOfBytesRead, LPOVERLAPPED lpOverLapped);
参数说明:
hFile:CreateFile函数返回的句柄;
lpBuffer:指定一个缓冲区,函数从文件中读取的内容保存在这个缓冲区中;
nNumberOfBytesToRead:要求读入的字节数,通常情况下是缓冲区的大小;
nNumberOfBytesRead:保存实际读入的字节数;
lpOverLapped:一般为NULL;
5、写入文件
BOOL WriteFile( HANDLE fFile, LPVOID lpBuffer, DWORD nNumberOfBytesToWrite, DWORD nNumberOfBytesReadWrite<span style="font-family:Arial, Helvetica, sans-serif;">,</span> LPOVERLAPPED lpOverLapped);参数的含义基本相同,其中第二个参数是保存将要写入文件的内容的缓冲区;
6、设置文件指针
DWORD SetFilePointer( HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod);参数说明:
hFIle:与上面的一样,表示文件的句柄;
lDistanceToMove:指定要移动的距离;
lpDistanceToMoveHigh:一个指向LONG型的指针,其保存一个要移动距离的高八位;
dwMoveMethod:指定要移动的起始位置;
7、创建目录
BOOL CreateDirectory( LPCTSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
参数说明:
lpPathName:创建目录的目录名称(包含路径)
lpSecurityAttribute:一般为NULL;
8、移除目录
BOOL CreateDirectory( <span style="white-space:pre"></span>LPCTSTR lpPathName)
编写AutoRun的部分代码:
获取盘符,初始化组合框
void CUDlg::InitComboDriver(){char szDriverString[MAXBYTE] = {0};char *pTmp = NULL;SetDlgItemText(IDC_COMBO1,_T("请选择欲免疫的盘符..."));GetLogicalDriveStrings(MAXBYTE,szDriverString);pTmp = szDriverString;while(*pTmp){m_ComboDriver.AddString(pTmp);pTmp += 4;}}添加免疫按钮的消息映射函数
#define AUTORUN "autorun.inf"#define IMMUNITY "\\immunity...\\"void CUDlg::OnCancel2() {// TODO: Add your control notification handler code herechar szPath[MAX_PATH] = {0};GetDlgItemText(IDC_COMBO1,szPath,MAX_PATH);strcat(szPath,AUTORUN);BOOL bRet = CreateDirectory(szPath,NULL);if(!bRet){AfxMessageBox("无法免疫该盘符!可能已经免疫,或者该盘为不可写状态!");return;}strcat(szPath,IMMUNITY);bRet = CreateDirectory(szPath,NULL);if(!bRet){AfxMessageBox("无法免疫该盘符!可能已经免疫,或者该盘为不可写状态!");return ;}}
添加取消按钮的消息映射函数
void CUDlg::OnCancel() {// TODO: Add extra cleanup herechar szPath[MAX_PATH] = {0};GetDlgItemText(IDC_COMBO1,szPath,MAX_PATH);strcat(szPath,AUTORUN);strcat(szPath,IMMUNITY);RemoveDirectory(szPath);ZeroMemory(szPath,MAX_PATH);GetDlgItemText(IDC_COMBO1,szPath,MAX_PATH);strcat(szPath,AUTORUN);RemoveDirectory(szPath);CDialog::OnCancel();}
- Windows文件操作API
- Windows CE文件操作
- Windows Phone文件操作
- windows文件目录操作
- Windows程序设计:文件操作
- windows 文件操作
- windows文件操作
- Windows API:文件操作
- Windows文件操作
- Windows文件操作
- windows文件操作函数
- Python Windows文件操作
- Windows 文件操作
- Windows API实现文件操作
- Windows默认文件操作(SHFileOperation)
- windows内核的文件操作
- 《Windows核心编程》---文件操作
- Windows畸形文件操作总结
- c++作业-4
- rocketmq 的cluster模式下确保消息不丢失之消费进度维护
- C++实验4-分数的累加
- Java之读取Properties属性文件【整理】
- 解决pdf中翻译外文文献到word参考文献格式错误
- Windows文件操作
- 理解Nodejs 的模块化思想 例子
- dll笔记
- Android Studio Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
- HDU 5239 Doom
- HDU 1010 Tempter of the Bone(DFS,奇偶剪枝)
- 反向代理的有趣用法
- Redis 和Memcache的区别
- 使用指针进行数组内的数字调换