API---文件操作
CreateFile() 介绍:
功能:打开或创建以下对象,并返回可访问的句柄:
控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道。
函数原型:HANDLE CreateFile (
LPCTSTR lpFileName, // 指向文件或其它设备名的指针。详情可见 CreateFile() 详解
DWORD dwDesiredAccess, // 访问模式(写 / 读)
DWORD dwShareMode, // 共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 指向安全属性的指针,一般为 NULL。
DWORD dwCreationDisposition, // 如何创建
DWORD dwFlagsAndAttributes, // 文件属性
HANDLE hTemplateFile // 用于复制文件句柄
);
参数:( 可组合)
lpFileName:若为命名管道服务器,则该值形式为:“\\.\pipe\pipename”,
若为命名管道客户端,则该值形式为:"\\servername\pipe\pipename"。
若为邮件槽服务器,则该值形式为:"\\.\mailslot\mailslotname",
若为邮件槽客户端,则该值形式为:"\\servername\mailslotname"。
dwDesiredAccess:GENERIC_READ , GENERIC_WRITE, 0 (只允许获取与设备有关的信息) 。
dwShareMode:FILE_SHARE_DELETE, FILE_SHARE_READ, FILE_SHARE_WRITE, 0 (不共享)。
lpSecurityAttributes:指向一个 SECURITY_ATTRIBUTES 结构的指针。
dwCreationDisposition:
// 主要作用是决定 CreateFile() 返回的句柄是否可以被子进程继承。
// 该值通常设置为 NULL 表示不能被继承。
typedef struct _SECURITY_ATTRIBUTES {
DWORD nLength; / /结构体的大小,可用SIZEOF取得
LPVOID lpSecurityDescriptor; / /安全描述符(一般为 NULL)
BOOL bInheritHandle ;/ /安全描述的对象能否被新创建的进程继承
} SECURITY_ATTRIBUTES,* PSECURITY_ATTRIBUTES;
CloseHandle() 介绍:
函数原型:BOOL ReadFile(
HANDLE hFile, //文件的句柄。
LPVOID lpBuffer, //用于保存读入数据的一个缓冲区。
DWORD nNumberOfBytesToRead, //指定需要要读入的字符数。
LPDWORD lpNumberOfBytesRead, //返回实际读取字节数的指针。
LPOVERLAPPED lpOverlapped //如文件打开时指定了FILE_FLAG_OVERLAPPED,
);
功能:从文件指针指向的位置开始将数据写入到一个文件中, 且支持同步和异步操作。
HANDLE hFile, // 文件句柄
LPCVOID lpBuffer, // 要写入的数据。
DWORD nNumberOfBytesToWrite, // 要写入的字节数。
LPDWORD lpNumberOfBytesWritten, // 实际写入的字节数。
LPOVERLAPPED lpOverlapped // 同 ReadFile(), 一般设置为 NULL。
);
LPCSTR lpPathName, //目录路径名。
LPSECURITY_ATTRIBUTES lpSecurityAttributes // 安全属性,同 CreateFile() ;
);
GetModuleFileName() 介绍:
功能:获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。
函数原型:DWORD WINAPI GetModuleFileName(
HMODULE hModule, // 表示正在被加载模块的句柄。
//如果为 NULL,则将当前可执行文件的完整路径复制到 lpFilename 中
LPTSTR lpFileName, // 指向保存完整路径的文件名。
DWORD nSize // 表示复制到 lpFileName 的最大字符数量。
);
返回值:如执行成功,返回复制到lpFileName的实际字符数量;零表示失败。
GetFileTitle() 介绍:
功能:从指定的文件路径中获取文件的名称。
(例如指定文件路径为:C:\Users\Public\Documents\Test.txt,则文件名称为 Test。
函数原型:short GetFileTitleA(
LPCSTR Path, // 指定的文件路径。
LPSTR Buf, // 接收文件名称的缓冲区。
WORD cchSize // 缓冲区的大小。
);
返回值:如果函数成功, 则返回值为零。如果文件名无效, 则返回值未知。如果出现错误, 返回值为负数。
LPTSTR lpBuffer, // 指向要接收路径的缓冲区的指针。
UINT uSize // 缓冲区的最大大小.
);
LPCTSTR lpFileName, // 指定的文件名。
DWORD dwFileAttributes // 文件属性(值如下表:)。
);
返回值:非零表示成功,零表示失败。
|
属性
|
含义
|
|
FILE_ATTRIBUTE_ARCHIVE
|
该文件是一个存档文件。应用程序使用此属性来备份或移除标记文件。
|
|
FILE_ATTRIBUTE_HIDDEN
|
该文件是隐藏的。它不包括在普通的目录列表。
|
|
FILE_ATTRIBUTE_NORMAL
|
该文件没有设置其他的属性。此属性仅在单独使用有效。
|
|
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
|
该文件将不被内容索引服务编制索引。
|
|
FILE_ATTRIBUTE_OFFLINE
|
该文件的数据不是立即可用。
此属性表明文件数据被物理移动到离线存储。
此属性用于通过远程存储,分层存储管理软件。
应用程序不应随意更改此属性。
|
|
FILE_ATTRIBUTE_READONLY
|
该文件是只读的。应用程序可以读取该文件,但不能写入或删除它。
|
|
FILE_ATTRIBUTE_SYSTEM
|
该文件是操作系统的一部分,或者完全由它使用。
|
|
FILE_ATTRIBUTE_TEMPORARY
|
该文件是被用于暂时存储。文件系统避免写入数据传回海量存储
如果有足够的缓存内存可用,因为经常在应用程序删除后不久
,这个句柄被关闭的临时文件。在这种情况下,该系统可以完全避免记录的数据。否则,在手柄关闭的数据将被写入。
|
GetFileAttributes() 介绍:
功能:为一个指定的文件或目录返回文件系统的属性。
函数原型:DWORD GetFileAttributes(
LPCSTR lpFileName // 指定的文件名。
);
返回值:如果函数成功,返回值包含文件或目录的属性。
如果函数失败,返回值是INVALID_FILE_ATTRIBUTES。
| 属性 | 含义 |
| FILE_ATTRIBUTE_ARCHIVE | 标示一个文件(或目录)是一个存档文件(或目录)。 |
| FILE_ATTRIBUTE_COMPRESSED |
标示一个文件(或目录)是一个压缩文件(或目录)。
用于文件时:该文件中所有的记录都是经过压缩的;
用于目录时:在该目录下新建文件或子目录时会默认进行压缩。
|
| FILE_ATTRIBUTE_DIRECTORY | 此句柄被视为一个目录 |
| FILE_ATTRIBUTE_ENCRYPTED |
标示一个文件(或目录)是一个加密文件(或目录)。
用于文件时:该文件中所有的记录都是经过加密的,包括读写操作;
用于目录时:在该目录下新建文件或子目录时会默认进行加密。
|
| FILE_ATTRIBUTE_HIDDEN | 标示一个文件(或目录)是一个隐藏文件(或目录)。 |
| FILE_ATTRIBUTE_NORMAL | 标示一个文件(或目录)不具有其他属性,此属性只能单独使用! |
| FILE_ATTRIBUTE_NOT_CONTENT_INDEXED | 标示一个文件不可被内容索引服务索引。 |
| FILE_ATTRIBUTE_OFFLINE |
标示一个文件是脱机文件,该文件中的内容无法直接使用。
如果某个文件具有该属性,请不要轻易修改此属性,它可能是某些远程存储服务程序的存储文件。
|
| FILE_ATTRIBUTE_READONLY |
标示一个文件(或目录)是一个只读文件(或目录)。
用于文件时:只能读取文件内容,无法修改或删除;
用于目录时:该目录无法删除。
|
| FILE_ATTRIBUTE_REPARSE_POINT | 标示一个文件(或目录)拥有相关的重新解析点,比如用mklink创建的硬链接或符号链接。 |
| FILE_ATTRIBUTE_SPARSE_FILE | 标示一个文件是稀疏文件。 |
| FILE_ATTRIBUTE_SYSTEM | 标示一个文件(或目录)是一个系统文件(或目录)。 |
| FILE_ATTRIBUTE_TEMPORARY | 标示一个文件是临时文件。 |
#include<stdio.h>
#include<Windows.h>
int main(void)
{
HANDLE hFile;
BOOL Bool;
TCHAR lpBuffer[MAX_PATH];
LPDWORD Num = ;
hFile = CreateFile("C:\\Users\\Public\\Documents\\Test.txt",
GENERIC_ALL,
NULL,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_HIDDEN,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("Create File Error!\n");
system("pause");
exit();
} printf("Input what you want to write:\n");
gets_s(lpBuffer); Bool = WriteFile(hFile,
lpBuffer,
MAX_PATH,
Num,
NULL); if (!Bool)
{
printf("Write File Error\n");
system("pause");
exit();
} CloseHandle(hFile);
printf("Create and Write Succeed\n");
system("pause");
return ;
}
API---文件操作的更多相关文章
- win32 api 文件操作!
CreateFile打开文件要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门. ReadFile从文件中读取字节信息.在打开文件获得了文件句柄之后, ...
- File API文件操作之FileReader
近来研究点对点的文件传输,想到一种方案FileReader+WebRtc. 当我看到FileReader的时候,哎呀,不错的东西啊,仔细一看属于File API,或者叫做Web API. File A ...
- File API文件操作之FileReader二
上一篇说了FileAPI中FileReader的readAsText,这里继续上文,说说另外一个API readAsDataURL. 这个接口是将File或者Blob读成base64格式的字符串,然后 ...
- Linux文件操作的主要接口API及相关细节
操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...
- Web API与文件操作
前段时间,一直有练习ASP.NET MVC与Web API交互,接下来,Insus.NET再做一些相关的练习,Web API与文件操作,如POST文件至Web API,更新或是删除等. 不管怎样,先在 ...
- Java api 入门教程 之 JAVA的文件操作
I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本 ...
- node.js整理 02文件操作-常用API
NodeJS不仅能做网络编程,而且能够操作文件. 拷贝 小文件拷贝 var fs = require('fs'); function copy(src, dst) { fs.writeFileSync ...
- (六)文件操作的主要接口API
1.什么是操作系统API (1)API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用. (2)应用层程序通过调用API来调用操作系统中的各种功能,来干活. (3)学习一个操作系统 ...
- paip.复制文件 文件操作 api的设计uapi java python php 最佳实践
paip.复制文件 文件操作 api的设计uapi java python php 最佳实践 =====uapi copy() =====java的无,要自己写... ====php copy ...
- H5文件操作API
引言 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或者跨浏览器.跨设备等情况下实现统一的表现,从另外一个 ...
随机推荐
- shell脚本中添加用户并设置密码
有时候在初始化shell脚本中希望能顺便创建用户并指定密码,使用useradd命令可以达到该效果: useradd -m -p encryptedPassword username 参数说明: -m ...
- HTML-css样式引用方式
1.使用行内样式表 语法:在标签内部写入一个style属性. 优点:没有样式表文件,在某些时候可以提高效率: 优先级高. 缺点:多个页面难以共享样式,不利于代码复用: HTML和CSS代码混杂,不利于 ...
- linux iconv 转换文件编码
查看文件编码file -i filename 递归转换(包括子文件夹)find default -type d -exec mkdir -p utf/{} \;find default -type f ...
- 【原创】如何根据日志来估算线上QPS
引言 大家好,我是渣渣烟. 我又来水文章了.这篇文章我个人感觉含金量不是太大,大概5分钟左右就能看完!其实大家都知道,我不爱写这种操作型的文章,一顿截图写几个命令就搞定了,含金量不高. 然而,近期有一 ...
- centos使用android studio遇到的一些问题
1.下载完成后进入bin目录启动 ./studio 2. 由于google被墙,SDK 下载不了, 照此教程添加下载源 http://jingyan.baidu.com/album/adc815137 ...
- 深入理解Three.js中线条Line,LinLoop,LineSegments
前言 在可视化开发中,无论是2d(canvas)开发还是3d开发,线条的绘制应用都是比较普遍的.比如绘制城市之间的迁徙图,运行轨迹图等.本文主要讲解的是Three.js中三种线条Line,LineLo ...
- Find the Multiple POJ-1426
题目链接:Find the Multiple 题目大意 找出一个只由0和1组成的能整除n的数. 思路 所有由0和1组成的数可以看作是某个只由0.1组成的数a经过以下两种变化得到 1.a * 10 2. ...
- Android Studio [真机测试/开发者模式]
一.手机设置 首先根据自己的手机型号百度打开开发者模式, 我的是vivo,设置--->更多设置-->关于手机-->软件版本号连续点击会提示开启开发者模式. 并在开发者选项里打开USB ...
- 品Spring:SpringBoot发起bean定义注册的“二次攻坚战”
上一篇文章整体非常轻松,因为在容器启动前,只注册了一个bean定义,就是SpringBoot的主类. OK,今天接着从容器的启动入手,找出剩余所有的bean定义的注册过程. 具体细节肯定会颇为复杂,同 ...
- cvc-complex-type.2.3: Element 'dependency' cannot have character [children], because the type's cont
直接复制网上的pom引入,报错 解决:自己手动输入一遍,不用直接复制,因为复制的时候,项目中编码跟网页上编码不一致,很容易导致出问题.