网站如何上传,输入姓名查个人信息,wordpress局域网无法访问,百度公司网站建设前言
各位师傅大家好#xff0c;我是qmx_07#xff0c;今天继续讲解Windows系统编程的相关知识:目录操作
目录
目录操作
创建目录
通过CreateDirectory函数创建目录 原型:
BOOL CreateDirectoryA([in] LPCSTR lpPathName,//目录名称[in, opt…前言
各位师傅大家好我是qmx_07今天继续讲解Windows系统编程的相关知识:目录操作
目录
目录操作
创建目录
通过CreateDirectory函数创建目录 原型:
BOOL CreateDirectoryA([in] LPCSTR lpPathName,//目录名称[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes//安全属性对目录的访问权限NULL表示默认的安全属性
);删除目录 使用RemoveDirectory函数删除目录 RemoveDirectory(源文件) 注意使用该函数只能删除空目录如果该目录有文件遍历删除文件再使用该函数
遍历目录文件(模仿dir命令)
WIN32_FIND_DATA
一般使用_WIN32_FIND_DATA来存储文件的信息下面了解一下存储了哪些内容:
typedef struct _WIN32_FIND_DATA {DWORD dwFileAttributes;//文件属性 比如是文件或者是目录FILETIME ftCreationTime;//文件目录的创建时间FILETIME ftLastAccessTime;//最后的访问时间FILETIME ftLastWriteTime;//最后的写入时间DWORD nFileSizeHigh;//存储的高位DWORDDWORD nFileSizeLow;//存储的低位DWORDDWORD dwReserved0;//保留内容DWORD dwReserved1;//保留内容CHAR cFileName[MAX_PATH];//文件名称CHAR cAlternateFileName[14];//文件备用名称}文件名称、创建时间、最近的读取、写入时间、文件大小等数据
时间戳及转换 我们使用FindFirstFile函数查找qmx.ini文件将数据存储到FindFileData中打印文件名称和创建时间但是可以观察到 创建时间是一堆数字并不能直接看到日期 时间戳是从1970年1月1日UTC/GMT的午夜开始所经过的秒数不考虑闰秒用于表示一个时间点 需要使用SYSTEMTIME和FileTimeToSystemTime函数来进行转换日期
SYSTEMTIME 和 FileTimeToSystemTime
typedef struct _SYSTEMTIME {WORD wYear;//年WORD wMonth;//月WORD wDayOfWeek;//星期WORD wDay;//天WORD wHour;//小时WORD wMinute;//分钟WORD wSecond;//秒钟WORD wMilliseconds;//毫秒
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;BOOL FileTimeToSystemTime([in] const FILETIME *lpFileTime,//FileTime的指针也就是时间戳[out] LPSYSTEMTIME lpSystemTime//SystemTime指针用来将时间戳转换到日期存储
);使用FileTimeToSystemTime函数将时间戳存储到SYSTEMTIME中将时间戳转换成年月日时分秒以此来打印数据
文件常量类型 这些是常用到的文件类型
实现 WIN32_FIND_DATA FindFileData;HANDLE hFile FindFirstFile(G:\\win_file\\test\\*, FindFileData);if (INVALID_HANDLE_VALUE hFile){std::cout FindFirstFile Faild std::endl;std::cout GetLastError() std::endl;}do{SYSTEMTIME SystemTime;FileTimeToSystemTime(FindFileData.ftCreationTime, SystemTime);std::cout SystemTime.wYear - SystemTime.wMonth-SystemTime.wDay ;if (FindFileData.dwFileAttributes FILE_ATTRIBUTE_DIRECTORY){std::cout DIR ;}std::cout FindFileData.cFileName std::endl;} while (FindNextFile(hFile, FindFileData));
逻辑通过遍历目录文件依次打印时间文件名称FindNextFile用来查找下一个文件FindFileData.dwFileAttributes FILE_ATTRIBUTE_DIRECTORY 判断文件是否是目录画面演示:
卷 CHAR VolumeName[MAX_PATH] { 0 };//用于存储卷的名称DWORD VolumeSerialNum;//存储卷的序列号DWORD MaxComponentLength;//存储文件名的最大长度DWORD SysFlags;//卷的特性信息CHAR FileSystem[MAX_PATH] { 0 };//存储文件系统名称GetVolumeInformation(D:\\, VolumeName, MAX_PATH, VolumeSerialNum, MaxComponentLength,SysFlags, FileSystem,MAX_PATH);GetVolumeInformation函数用于获取卷信息
磁盘
BOOL GetDiskFreeSpaceA([out] LPDWORD lpSectorsPerCluster,//用于获取指定磁盘卷中每个簇包含的扇区数量[out] LPDWORD lpBytesPerSector,//用于获取指定磁盘卷中每个扇区包含的字节数[out] LPDWORD lpNumberOfFreeClusters,//用于获取指定磁盘卷中当前空闲的簇的数量[out] LPDWORD lpTotalNumberOfClusters//用于获取指定磁盘卷中总的簇的数量
);lpSectorsPerCluster * lpBytesPerSector 空闲空间大小 空闲簇数量 × 簇大小lpSectorsPerCluster和lpBytesPerSector 计算磁盘总大小
总结
学习了目录的相关知识 了解 时间戳 遍历文件 模拟dir命令、以及卷磁盘 使用windows api查看相关信息