CreateFile打开文件或者打开目录

一、打开目录

参数列表:

lpFileName String 要打开的文件的名字

  dwDesiredAccess Long 如果为 GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息

  dwShareMode Long, 零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允许对文件进行共享访问

  lpSecurityAttributes SECURITY_ATTRIBUTES, 指向一个SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性(如果操作系统支持的话)

  dwCreationDisposition Long,下述常数之一:

  CREATE_NEW 创建文件;如文件存在则会出错

  CREATE_ALWAYS 创建文件,会改写前一个文件

  OPEN_EXISTING 文件必须已经存在。由设备提出要求

  OPEN_ALWAYS 如文件不存在则创建它

  TRUNCATE_EXISTING 讲现有文件缩短为零长度

  dwFlagsAndAttributes Long, 一个或多个下述常数

  FILE_ATTRIBUTE_ARCHIVE 标记归档属性

  FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式

  FILE_ATTRIBUTE_NORMAL 默认属性

  FILE_ATTRIBUTE_HIDDEN 隐藏文件或目录

  FILE_ATTRIBUTE_READONLY 文件为只读

  FILE_ATTRIBUTE_SYSTEM 文件为系统文件

  FILE_FLAG_WRITE_THROUGH 操作系统不得推迟对文件的写操作

  FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作

  FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块

  FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化

  FILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化

  FILE_FLAG_DELETE_ON_CLOSE 关闭了上一次打开的句柄后,将文件删除。特别适合临时文件

  也可在Windows NT下组合使用下述常数标记:

  SECURITY_ANONYMOUS, SECURITY_IDENTIFICATION, SECURITY_IMPERSONATION, SECURITY_DELEGATION, SECURITY_CONTEXT_TRACKING, SECURITY_EFFECTIVE_ONLY

  hTemplateFile Long, 如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性

返回值

  如执行成功,则返回文件句柄。

  INVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了CREATE_ALWAYS 或 OPEN_ALWAYS,GetLastError也会设为ERROR_ALREADY_EXISTS

#include <iostream>
#include <cstdio>
#include <fstream>
#include <string>
#include <atlstr.h>    //CString头文件
#include <Windows.h>   

using namespace std;

int main()
{
	CString sFilePath="E:\\Workspace\\Export";   //绝对路径

	HANDLE hFile=CreateFile(sFilePath,      //第一个参数:路径
		GENERIC_READ,                       //打开方式:
		0,                                  //共享模式:0为独占
		NULL,
		OPEN_EXISTING,                      //打开已存在的文件
		FILE_FLAG_BACKUP_SEMANTICS,         //FILE_FLAG_BACKUP_SEMANTICS表示为目录,NULL表示文件
		NULL);
	if(hFile == INVALID_HANDLE_VALUE)
	{
		printf("Opening %S failed\n",sFilePath);
		return 1;
	}
	printf("Opening %S success\n",sFilePath);
	getchar();
	CloseHandle(hFile);
	system("pause");
	return 0;
}

  二、打开文件

#include <iostream>
#include <cstdio>
#include <fstream>
#include <string>
#include <atlstr.h>    //CString头文件
#include <Windows.h>   

using namespace std;

int main()
{
	CString sFilePath="E:\\Workspace\\Export\\text.txt";   //绝对路径

	HANDLE hFile=CreateFile(sFilePath,      //第一个参数:路径
		GENERIC_READ,                       //打开方式:
		0,                                  //共享模式:0为独占
		NULL,
		OPEN_EXISTING,                      //打开已存在的文件
		NULL,         //FILE_FLAG_BACKUP_SEMANTICS表示为目录,NULL表示文件
		NULL);
	if(hFile == INVALID_HANDLE_VALUE)
	{
		printf("Opening %S failed\n",sFilePath);
		return 1;
	}
	printf("Opening %S success\n",sFilePath);
	getchar();
	CloseHandle(hFile);
	system("pause");
	return 0;
}

  

时间: 2024-10-05 23:23:45

CreateFile打开文件或者打开目录的相关文章

文件描述符、文件描述符表、打开文件表、目录项、索引节点之间的联系

文件描述符.文件描述符表.打开文件表.目录项.索引节点之间的联系如下图所示: 每个进程在PCB(Process Control Block)中都保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针,已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体. 在file结构体中维护File Status Flag(file结构体的成员f_flags)和当前读写位置(file结构体的成员f_pos).在上图中,进程1和进程2都打开同一文件,

在eclipse中打开文件所在的目录

eclipse中默认是不能直接打开文件所在的目录的,需要在文件中右键-->properties-->location,复制到资源管理器中才能打开文件所在的目录.这种方法很麻烦.这里介绍一种在eclipse中直接打开文件所在目录的方法. 工具/原料 eclipse 方法/步骤 展开如下菜单: Run ---- External Tools ---- External Tools Configurations   在 program 下面新建一个工具   在 Location 中填写 window

[转]Eclipse下打开文件所在的目录

以下内容转自:http://jingyan.baidu.com/article/eae07827f7f6d01fec5485f3.html 展开如下菜单: Run ---- External Tools ---- External Tools Configurations 在 program 下面新建一个工具 在 Location 中填写 windows 资源管理器路径,如果c:\windows\explorer.exe 在 Arguments 中填写 ${container_loc} 选择 C

MFC 打开文件对话框 打开单个文件

CFileDialog的语法: CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter=NULL,CWnd * pParentWnd=NULL);  第一个参数 bOpenFileDialog为TRUE或FALSE.TRUE为打开文件:FAL

解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录

解决Ubuntu系统中文乱码显示问题 [日期:2014-02-20] 来源:Linux社区  作者:njchenyi [字体:大 中 小] 我是先安装了Ubuntu 12.04 Server,然后安装桌面.进入以后发现中文有问题. 解决方法:一. Ubuntu默认的中文字符编码Ubuntu默认的中文字符编码为zh_CN.UTF-8,这个可以在/etc/environment中看到:sudo gedit /etc/environment可以看到如下内容:PATH="/usr/local/sbin:

C# 系统应用之ListView控件 (三).添加ContextMenuStrip右键菜单打开文件和删除文件功能

在前面讲述过使用TreeView控件和ListView控件显示磁盘目录信息,但仅仅是显示信息是不够的,我们还需要具体的操作.在"个人电脑使用历史痕迹"项目中我还需要添加"打开文件"和"删除文件"两种方法.具体如下: 在第一篇文章"C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标"中显示如下: http://blog.csdn.net/eastmount/article/details/1945310

C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用. 文件(file)是程序设计中一个重要的概念.所谓“文件”,一般指存储在外部介质上数据的集合.一批数据是以文件的形式存放在外部介质(如磁盘.光盘和U盘)上的.操 作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部

打开文件、文件操作、管理上下文

1 文件句柄 = open('文件路径', '模式') 1.打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r ,只读模式[默认] w,只写模式[不可读:不存在则创建:存在则清空内容:] x, 只写模式[不可读:不存在则创建,存在则报错] a, 追加模式[可读:   不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+, 读写[可读,可写] w+,写读[可读,可写] x+ ,写读[

利用注册表在右键添加VS15的快捷方式打开文件夹

1.简介 最近安装VS15 Preview 5,本版本可以打开"文件夹" 是否可以向Visual Studio Code一样在文件夹或文件右键菜单添加"Open with Code",答案是当然可以的. 2.打开文件 1.Win+R 打开运行,输入regedit,打开注册表,找到HKEY_CLASSES_ROOT\*\shell分支,如果没有shell分支,则在*下点击右键,选择"新建-项",建立shell分支. 2.在shell下新建"