window API一天一练之操作文件和目录
来源:互联网 发布:飞时达土方软件 编辑:程序博客网 时间:2024/05/16 08:24
今天花了好长时间了解文件和目录相关的API ,写了简单的验证程序,如有问题之处,希望各位大神指正。代码比较多久不一一列举API的声明之类的信息了。
/***********************************功能:输出文件属性信息参数:文件属性*************************************/void PrintFileAttributeMessage(DWORD dwFileAttribute){printf("文件属性:\n");if (dwFileAttribute & FILE_ATTRIBUTE_ARCHIVE){printf("A file or directory that is an archive file or directory\n");} else if (dwFileAttribute & FILE_ATTRIBUTE_TEMPORARY){printf("A file that is being used for temporary storage\n");} else if (dwFileAttribute & FILE_ATTRIBUTE_OFFLINE){printf("The data of a file is not available immediately\n");} else if (dwFileAttribute & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED){printf("The file or directory is not to be indexed by the content indexing service.\n");} else if (dwFileAttribute & FILE_ATTRIBUTE_HIDDEN){printf("The file or directory is hidden\n");} else if (dwFileAttribute & FILE_ATTRIBUTE_SYSTEM){printf("A file or directory that the operating system uses a part of, or uses exclusively.\n");} else if (dwFileAttribute & FILE_ATTRIBUTE_NORMAL){printf("A file that does not have other attributes set\n");} else if (dwFileAttribute & FILE_ATTRIBUTE_READONLY){printf("A file that is read-only. Applications can read the file, but cannot write to it or delete it. \n");} }/***********************************功能:获取文件属性信息参数:*************************************/void GetFileAttributeInfo(){CHAR szPathName[MAX_PATH];ZeroMemory(szPathName,MAX_PATH);printf("请输入要获取属性的文件名:\n");scanf("%s",szPathName);DWORD dwFileAttribute = GetFileAttributes(szPathName);if (INVALID_FILE_ATTRIBUTES == dwFileAttribute){printf("获取文件属性失败\n");return ;}PrintFileAttributeMessage(dwFileAttribute);}/***********************************功能:将系统时间转为中文格式输出参数:系统时间*************************************/void PrintFileTime(SYSTEMTIME &systemTime){map<int,LPSTR> dayofWeekMap;dayofWeekMap[0] = "日";dayofWeekMap[1] = "一";dayofWeekMap[2] = "二";dayofWeekMap[3] = "三";dayofWeekMap[4] = "四";dayofWeekMap[5] = "五";dayofWeekMap[6] = "六";printf("%d 年 %d 月 %d 日,星期%s ",systemTime.wYear,systemTime.wMonth ,systemTime.wDay ,dayofWeekMap[systemTime.wDayOfWeek]);printf("时间:%02d : %02d : %02d \n",systemTime.wHour ,systemTime.wMinute,systemTime.wSecond);}/***********************************功能:输出文件信息参数:文件信息*************************************/void PrintFileInfo(WIN32_FIND_DATA &findFileData ){printf("文件名:%s\n",findFileData.cFileName);PrintFileAttributeMessage(findFileData.dwFileAttributes);SYSTEMTIME systemTime;if (FileTimeToSystemTime(&findFileData.ftCreationTime,&systemTime)){printf("创建时间:\n");PrintFileTime(systemTime);}if (FileTimeToSystemTime(&findFileData.ftLastAccessTime,&systemTime)){printf("最后访问时间:\n");PrintFileTime(systemTime);}if (FileTimeToSystemTime(&findFileData.ftLastWriteTime,&systemTime)){printf("最后写文件时间:\n");PrintFileTime(systemTime);}}/***********************************功能:遍历文件目录并输出目录下所有文件信息参数:路径*************************************/void EnumerateFile(LPSTR lpPath){CHAR szFilePath[MAX_PATH];CHAR szFullPath[MAX_PATH];WIN32_FIND_DATA FindFileData;wsprintf(szFilePath,"%s\\%s",lpPath,"*.*");HANDLE hFile = FindFirstFile(szFilePath,&FindFileData);if (hFile == INVALID_HANDLE_VALUE){printf("查找文件失败\n");return ;} else{do{if (lstrcmp(FindFileData.cFileName,TEXT(".")) == 0 || lstrcmp(FindFileData.cFileName,TEXT("..")) == 0){continue;}if ((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){wsprintf(szFullPath,"%s\\%s",lpPath,FindFileData.cFileName);EnumerateFile(szFullPath);} else{PrintFileInfo(FindFileData);}}while (FindNextFile(hFile,&FindFileData));}}/***********************************功能:显示功能菜单和实现相关操作参数:*************************************/void Menu(){printf("**************** 菜单 ****************** \n");printf("0 -----------------------------退出\n");printf("1 -----------------------------创建目录\n");printf("2 -----------------------------获取当前目录\n");printf("3 -----------------------------设置当前目录\n");printf("4 -----------------------------获取模块路径\n");printf("5 -----------------------------查找文件\n");printf("6 -----------------------------遍历目录\n");printf("7 -----------------------------获取文件属性\n");printf("8 -----------------------------设置文件属性\n");printf("9 -----------------------------删除目录\n");printf("请输入选择的操作:\n");int iOption;scanf("%d",&iOption);while(true){if (iOption < 0 || iOption >9){printf("输入有误,请重新输入:\n");int iOption;scanf("%d",&iOption);} else{switch (iOption){case 0:return;case 1:{CHAR szPathName[MAX_PATH];ZeroMemory(szPathName,MAX_PATH);printf("请输入要创建的目录:\n");scanf("%s",szPathName);if (!CreateDirectory(szPathName,NULL)){printf("创建目录失败\n");}}break;case 2:{CHAR szPathName[MAX_PATH];ZeroMemory(szPathName,MAX_PATH);if (!GetCurrentDirectory(MAX_PATH,szPathName)){printf("获取当前目录失败\n");}else{printf("当前目录为:%s\n",szPathName);}}break;case 3:{CHAR szPathName[MAX_PATH];ZeroMemory(szPathName,MAX_PATH);printf("请输入要设置的目录:\n");scanf("%s",szPathName);if (!SetCurrentDirectory(szPathName)){printf("设置目录失败\n");}ZeroMemory(szPathName,MAX_PATH);if (!GetCurrentDirectory(MAX_PATH,szPathName)){printf("创建目录失败\n");}else{printf("修改之后的当前目录为:%s\n",szPathName);}}break;case 4:{CHAR szPathName[MAX_PATH];ZeroMemory(szPathName,MAX_PATH);if (!GetModuleFileName(NULL,szPathName,MAX_PATH)){printf("获取当前模块路径失败\n");}else{printf("当前模块路径为:%s\n",szPathName);}}break;case 5:{CHAR szPathName[MAX_PATH];ZeroMemory(szPathName,MAX_PATH);printf("请输入要查找的文件:\n");scanf("%s",szPathName);WIN32_FIND_DATA findFileData = {0};HANDLE hFile;hFile = FindFirstFile(szPathName,&findFileData);if (hFile == INVALID_HANDLE_VALUE){printf("找不到指定文件或目录\n");}else{PrintFileInfo(findFileData);while (FindNextFile(hFile,&findFileData)){PrintFileInfo(findFileData);}}FindClose(hFile);}break;case 6:{CHAR szPathName[MAX_PATH];ZeroMemory(szPathName,MAX_PATH);printf("请输入要遍历的目录:\n");scanf("%s",szPathName);EnumerateFile(szPathName);}break;case 7:{GetFileAttributeInfo();}break;case 8:{CHAR szPathName[MAX_PATH];ZeroMemory(szPathName,MAX_PATH);printf("请输入要改变属性的文件:\n");scanf("%s",szPathName);if (!SetFileAttributes(szPathName,FILE_ATTRIBUTE_READONLY)){printf("改变文件属性失败\n");}}break;case 9:{CHAR szPathName[MAX_PATH];ZeroMemory(szPathName,MAX_PATH);printf("请输入要删除的目录:\n");scanf("%s",szPathName);if (!RemoveDirectory(szPathName)){printf("删除目录失败\n");}}break;}printf("请选择操作项:\n");scanf("%d",&iOption);}}}
- window API一天一练之操作文件和目录
- window API一天一练之共享内存
- window API一天一练之邮槽
- windows api 每日一练(1)目录操作
- 一天一练之基数排序
- window API一天一练习之磁盘遍历
- window API一天一练习之获取磁盘空间
- windows api 每日一练(3)文件操作
- windows api 每日一练(2)文件操作
- MFC一天一练 --- 基本绘图操作
- MFC一天一练 ---- 静态菜单操作
- 一天一练之起泡排序算法
- 一天一练之快速排序算法
- 汇编语言复习(一天一练之day1)
- 【PowerShell 一天一练】 7. 从网络拷贝和删除rar文件
- Windows API 每日一练之 TrackMouseEvent
- 【opencv 一日一练】 api 之 blur
- MFC一天一练 ---- 基本的文本操作
- 单片机数码管0000-9999显示问题
- CXF配置Webservice接口
- Android Camera实践(一)
- Android EditText
- 百度地图之精度和纬度的相互转换
- window API一天一练之操作文件和目录
- Hadoop实验学习笔记(参考)
- 黑马程序员-冒泡排序、直接排序、二分法
- file_get_contents使用
- DSP算法系列教程定点算数运算
- 生活琐事(一)丢魂了
- poj1035——Spell checker(串)
- Android 4.2 輸入流程研究心得
- Android 手动显示和隐藏软键盘