CreateFile()怎么打开一个文件啊 比如 c:\a.txt

hillyard 2006-07-16 08:47:23
HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file
DWORD dwDesiredAccess, // access (read-write) mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
// pointer to security attributes
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to file with attributes to
// copy
);
我不会用 这个函数 请高手指教
...全文
472 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
healer_kx 2006-07-17
  • 打赏
  • 举报
回复
CreateFile 非常强大,一堆参数,随便看看MSDN就能打开文件了,创建文件等等。。。
妍妍 2006-07-17
  • 打赏
  • 举报
回复
建议看看《windows程序设计》这本书
Dong 2006-07-16
  • 打赏
  • 举报
回复
HANDLE hDir = CreateFile (File, GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);

CloseHandle(hDir);

指定一个文件名/文件夹名,其他都都给好参数
Dong 2006-07-16
  • 打赏
  • 举报
回复
google一下很多。

// 获取指定文件夹的时间属性,入口参数DirName指定了待处理的文件夹,stime为一
// 指向SYSTEMTIME结构的指针
BOOL CSetForderTimeDlg::GetDirTime(CString DirName, SYSTEMTIME &stime){
// 打开文件夹
HANDLE hDir = CreateFile (DirName, GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
FILETIME lpCreationTime; // 文件夹的创建时间
FILETIME lpLastAccessTime; // 对文件夹的最近访问时间
FILETIME lpLastWriteTime; // 文件夹的最近修改时间
// 获取文件夹时间属性信息
if (GetFileTime(hDir, &lpCreationTime, &lpLastAccessTime, &lpLastWriteTime)){
FILETIME ftime;
FileTimeToLocalFileTime(&lpLastWriteTime, &ftime); // 转换成本地时间
FileTimeToSystemTime(&ftime, &stime); // 转换成系统时间格式
}
CloseHandle(hDir); // 关闭打开过的文件夹
return retval;
}

// 设置指定文件夹的时间属性,入口参数DirName指定了待处理的文件夹,new_time
// 为一指向SYSTEMTIME结构的指针
BOOL CSetForderTimeDlg::SetDirTime(CString DirName, SYSTEMTIME new_stime){
// 打开目录的Win32 API调用
HANDLE hDir = CreateFile(DirName, GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
FILETIME lpCreationTime; // 文件夹的创建时间
FILETIME lpLastAccessTime; // 对文件夹的最近访问时间
FILETIME lpLastWriteTime; // 对文件夹的最近修改时间
SystemTimeToFileTime(&new_stime, &lpCreationTime); // 转换成文件时间格式
SystemTimeToFileTime(&new_stime, &lpLastAccessTime);
SystemTimeToFileTime(&new_stime, &lpLastWriteTime);
// 设置文件夹的时间属性
BOOL retval = SetFileTime(hDir, &lpCreationTime, &lpLastAccessTime, &lpLastWriteTime);
CloseHandle(hDir); // 关闭文件夹
return retval;
}


  至此,可以很方便的通过调用GetDirTime()和SetDirTime()函数来实现对任意指定文件夹时间属性的获取与设置,具体为:

SYSTEMTIME stime; // 系统时间结构对象
if (GetDirTime(m_Path, stime))
{
 // 如果获取文件夹时间属性成功,获取到的时间信息将保存在stime结构对象中
 ……
 // 如果需要可以对获取到的时间属性进行修改,也可以保留不变
 ……
 // 将修改后的时间属性回写到文件夹
 SetDirTime(m_Path, stime);
}
ckp 2006-07-16
  • 打赏
  • 举报
回复
如果只是读此文件:
HANDLE CreateFile(
"c:\\a.txt"(文件名),
GENERIC_READ(访问模式:读访问,写访问,读写访问,还是查询模式),
FILE_SHARE_READ(共享模式:读共享、写共享、删除共享、不允许共享),
NULL(安全属性:请参阅:MSDN的SECURITY_ATTRIBUTES),
OPEN_EXISTING或者OPEN_ALWAYS(详细情况请参阅MSDN,创建策略:建立新文件CREATE_NEW、总是建立CREATE_ALWAYS、打开已存在的OPEN_EXISTING、总是打开OPEN_ALWAYS、TRUNCATE_EXISTING),
FILE_ATTRIBUTE_NORMAL(文件属性,原来用过DOS的应该对这个很熟悉),
hTemplateFile---临时文件句柄,一般可以忽略,设置为NULL
);

如果文件打开或者创建失败,返回INVALID_HANDLE_VALUE,否则返回打开的文件句柄。
使用CloseHandle 关闭打开的文件句柄。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧