windows api 每日一练(3)文件操作
2009-11-17 11:10 Clingingboy 阅读(1304) 评论(1) 编辑 收藏 举报参考:http://www.yesky.com/99/1824599.shtml
1.OpenFile 全功能函数,可以打开,创建,删除文件
HFILE WINAPI OpenFile( __in LPCSTR lpFileName, __out LPOFSTRUCT lpReOpenBuff, __in UINT uStyle );
2.获取文件长度
DWORD WINAPI GetFileSize( __in HANDLE hFile, __out_opt LPDWORD lpFileSizeHigh );
3.获取文件类型
DWORD WINAPI GetFileType( __in HANDLE hFile );
BOOL WINAPI GetFileTime( __in HANDLE hFile, __out_opt LPFILETIME lpCreationTime, __out_opt LPFILETIME lpLastAccessTime, __out_opt LPFILETIME lpLastWriteTime );
5.获取文件名
(1)全名
DWORD WINAPI GetFullPathName( __in LPCTSTR lpFileName, __in DWORD nBufferLength, __out LPTSTR lpBuffer, __out LPTSTR* lpFilePart );
DWORD WINAPI GetLongPathName( __in LPCTSTR lpszShortPath, __out LPTSTR lpszLongPath, __in DWORD cchBuffer );
(3)短路径名
DWORD WINAPI GetShortPathName( __in LPCTSTR lpszLongPath, __out LPTSTR lpszShortPath, __in DWORD cchBuffer );
Test
#include <windows.h> #include <stdio.h> #include <iostream> int main() { std::wstring originalStrFile(L"./test.txt"); HANDLE hFile; hFile = CreateFile(originalStrFile.c_str(), // file to open GENERIC_READ, // open for reading FILE_SHARE_READ, // share for reading NULL, // default security OPEN_EXISTING, // existing file only FILE_ATTRIBUTE_NORMAL, // normal file NULL); //获?取?文?件?大?小? DWORD dwSize =GetFileSize(hFile,NULL); //获?取?文?件?类?型? DWORD fileType=GetFileType(hFile); //获?取?文?件?时?间?信?息? FILETIME time1; FILETIME time2; FILETIME time3; GetFileTime(hFile,&time1,&time2,&time3); //获?取?文?件?名? DWORD bufferLength=100; TCHAR buffer[100]=TEXT(""); TCHAR* lpPart[100]={NULL}; //获?取?全?名? GetFullPathName(originalStrFile.c_str(),bufferLength,buffer,lpPart); //获?取?长?路?径?名? GetLongPathName(originalStrFile.c_str(),buffer,bufferLength); //获?取?短?路?径?名? GetShortPathName(originalStrFile.c_str(),buffer,bufferLength); //关?闭?句?柄?对?象? CloseHandle(hFile); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现