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:

                                              CREATE_NEW 创建文件;如文件存在则会出错。
                                              CREATE_ALWAYS 创建文件,会改写前一个文件。
                                              OPEN_EXISTING 文件必须已经存在。由设备提出要求。
                                              OPEN_ALWAYS 如文件不存在则创建它。
                                              TRUNCATE_EXISTING 将现有文件缩短为零长度。
          dwFlagsAndAttributes:
                                               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 关闭了上一次打开的句柄后,将文件删除。
          hTemplateFile:如果不为零,则指定一个文件句柄,新文件将从这个文件中复制和扩展属性。
 
返回值:如执行成功,则返回文件句柄。否则返回 INVALID_HANDLE_VALUE。
 
struct _SECURITY_ATTRIBUTES 结构体:
// 主要作用是决定 CreateFile() 返回的句柄是否可以被子进程继承。
// 该值通常设置为 NULL 表示不能被继承。
typedef struct _SECURITY_ATTRIBUTES {
DWORD nLength; / /结构体的大小,可用SIZEOF取得
LPVOID lpSecurityDescriptor; / /安全描述符(一般为 NULL)
BOOL bInheritHandle ;/ /安全描述的对象能否被新创建的进程继承
} SECURITY_ATTRIBUTES,* PSECURITY_ATTRIBUTES;

CloseHandle() 介绍:

功能:关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。
函数原型:BOOL CloseHandle( HANDLE hObject ) ;
参数:hObject Long,欲关闭的一个对象的句柄。
返回值:非零表示成功,零表示失败。
 
ReadFile() 介绍:
功能:从文件指针指向的位置开始将数据读出到一个文件中, 且支持同步和异步操作。

函数原型:BOOL ReadFile(

             HANDLE hFile, //文件的句柄。
             LPVOID lpBuffer, //用于保存读入数据的一个缓冲区。
             DWORD nNumberOfBytesToRead, //指定需要要读入的字符数。
             LPDWORD lpNumberOfBytesRead, //返回实际读取字节数的指针。
             LPOVERLAPPED lpOverlapped //如文件打开时指定了FILE_FLAG_OVERLAPPED,

       // 那么必须用这个参数引用一个特殊的结构。该结构定义了一次异步读取操作。否则,应将这个参数设为NULL。
  );
返回值:非零表示成功,零表示失败。
 
WriteFile() 介绍:
功能:从文件指针指向的位置开始将数据写入到一个文件中, 且支持同步和异步操作。
函数原型:BOOL WriteFile(
                  HANDLE       hFile,    // 文件句柄
                  LPCVOID      lpBuffer,  // 要写入的数据。
                  DWORD        nNumberOfBytesToWrite,  // 要写入的字节数。
                  LPDWORD      lpNumberOfBytesWritten, // 实际写入的字节数。
                  LPOVERLAPPED lpOverlapped       //  同 ReadFile(), 一般设置为 NULL。
);
返回值:非零表示成功,零表示失败。
 
SetFilePointer() 介绍:
功能:在一个文件中设置当前的读取位置。
函数原型:DWORD SetFilePointer(

                  HANDLE hFile, // 文件句柄。
                  LONG lDistanceToMove, // 偏移量(低位)。
                  PLONG lpDistanceToMoveHigh, // 偏移量(高位)。( 通常为 NULL)
                  DWORD dwMoveMethod // 基准位置:
                                                               FILE_BEGIN:文件开始位置。
                                                               FILE_CURRENT:文件当前位置 。
                                                               FILE_END:文件结束位置。
返回值:返回一个新位置,HFILE_ERROR意味着出错。
 
DeleteFile() 介绍:
功能:删除指定文件或目录。
函数原型:BOOL DeleteFile(
                  LPCSTR  lpFileName // 指向要删除的文件。
                  );

返回值:非零表示成功,零表示失败。
 
 CreateDirectory() 介绍:
功能:创建新的目录。
函数原型:BOOL CreateDirectoryA(
                  LPCSTR                lpPathName,   //目录路径名。
                  LPSECURITY_ATTRIBUTES lpSecurityAttributes  // 安全属性,同 CreateFile() ;
                  );
返回值:非零表示成功,零表示失败。
 
RemoveDirectory() 介绍:
功能:删除目录。
函数原型:BOOL RemoveDirectory(

                  LPCTSTR lpPathName // 指向要删除的目录。
                  );
返回值:非零表示成功,零表示失败。
 
CopyFile() 介绍:
功能:复制文件或目录。
函数原型:BOOL CopyFile(

                  LPCTSTRlpExistingFileName,  // 指向源文件名。
                  LPCTSTR lpNewFileName, // 指向目标文件名。
                  BOOL bFailIfExists     // 文件操作标志。指明如果在目的路径存在文件时是否覆盖。
                  //如果设为TRUE(非零),将不覆盖已经存在的文件。否则覆盖已存在的文件。
                  );
返回值:非零表示成功,零表示失败。
MoveFile() 介绍:
功能:移动文件或目录位置。
函数原型:BOOL MoveFile(

                  LPCTSTR lpExistingFileName, // 指向源文件名。
                  LPCTSTR lpNewFileName // 指向目标文件名。
                  );
返回值:非零表示成功,零表示失败。
 

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  // 缓冲区的大小。
                  );

返回值:如果函数成功, 则返回值为零。如果文件名无效, 则返回值未知。如果出现错误, 返回值为负数。

 
GetSystemDirectory() 介绍:
功能:取得Windows系统目录 (System目录) 的完整路径名。
函数原型:UINT WINAPI GetSystemDirectory(
                  LPTSTR lpBuffer,   // 指向要接收路径的缓冲区的指针。
                  UINT   uSize    // 缓冲区的最大大小.
                  );
返回值:如果函数成功, 则返回值是复制到缓冲区的字符串的长度。如果函数失败, 则返回值为零。
 
SetFileAttributes() 介绍:
功能:设置文件或目录属性。
函数原型:BOOL SetFileAttributes(

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 标示一个文件是临时文件。
 
DEMO CODE:
#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---文件操作的更多相关文章

  1. win32 api 文件操作!

    CreateFile打开文件要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门. ReadFile从文件中读取字节信息.在打开文件获得了文件句柄之后, ...

  2. File API文件操作之FileReader

    近来研究点对点的文件传输,想到一种方案FileReader+WebRtc. 当我看到FileReader的时候,哎呀,不错的东西啊,仔细一看属于File API,或者叫做Web API. File A ...

  3. File API文件操作之FileReader二

    上一篇说了FileAPI中FileReader的readAsText,这里继续上文,说说另外一个API readAsDataURL. 这个接口是将File或者Blob读成base64格式的字符串,然后 ...

  4. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  5. Web API与文件操作

    前段时间,一直有练习ASP.NET MVC与Web API交互,接下来,Insus.NET再做一些相关的练习,Web API与文件操作,如POST文件至Web API,更新或是删除等. 不管怎样,先在 ...

  6. Java api 入门教程 之 JAVA的文件操作

    I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本 ...

  7. node.js整理 02文件操作-常用API

    NodeJS不仅能做网络编程,而且能够操作文件. 拷贝 小文件拷贝 var fs = require('fs'); function copy(src, dst) { fs.writeFileSync ...

  8. (六)文件操作的主要接口API

    1.什么是操作系统API (1)API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用. (2)应用层程序通过调用API来调用操作系统中的各种功能,来干活. (3)学习一个操作系统 ...

  9. paip.复制文件 文件操作 api的设计uapi java python php 最佳实践

    paip.复制文件 文件操作 api的设计uapi java python php 最佳实践 =====uapi   copy() =====java的无,要自己写... ====php   copy ...

  10. H5文件操作API

    引言 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或者跨浏览器.跨设备等情况下实现统一的表现,从另外一个 ...

随机推荐

  1. mysql设置updatetime字段每次修改时自动更新

    我们在数据库表设计阶段中都会加上CreateTime, UpdateTime字段, 在重要业务字段更新的时候,都会重新赋值UpdateTime字段,这个对后期查找分析业务数据变更时非常有用. 但是现在 ...

  2. Winform中使用ZedGraph实现曲线图中字体去掉边框

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  3. ubuntu 12.04下访问windows共享文件夹

    ubuntu 12.04LTS已经不支持smbfs文件系统,所以不能用mount -smbfs 来映射windows共享文件夹. 常见有两种方法 1.terminal下 mount //192.168 ...

  4. 《Java核心技术卷1》读书笔记

    一.基础 数据类型 Java是一种强类型语言,一共8种基本类型,没有无符号类型 整型:int(正负20亿).short(正负3万).long(巨多).byte(正负127) 浮点类型:float(正负 ...

  5. 章节十六、10-TestNG报告和日志

    一.在进行自动化的过程中,日志一般采用log4j 2进行日志记录,但TestNG自己本身也带有日志记录功能(reporter),它的好处在于日志中记录的内容都是testng自动生成的. package ...

  6. 2018年蓝桥杯java b组第七题

    标题:螺旋折线 如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, ...

  7. Android Studio [页面的跳转和传值]

    AActivity.java package com.xdw.a122.jump; import android.app.Activity; import android.content.Compon ...

  8. .Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布

    .Net Core 跨平台:一个简单程序的多平台(windows.Linux.osx)发布 .Net Core 3.0 已于2019年9月23日发布了,包含了一些新特性,具体参见Announcing ...

  9. 读《深入理解Elasticsearch》点滴-查询模版(结合官网手册,版本5.1)

    1.为什么使用查询模版 让应用程序开发者只需要把查询传递给elasticsearch,而不需要考虑查询语句的构造.查询DSL语法.查询结果过滤等细节知识. 2.使用版本5.1,查询模版在5.6中发生变 ...

  10. 使用servlet+jdbc+MD5实现用户加密登录

    /** * 分析流程: * 1.前端页面提交登录请求 * 2.被web.xml拦截,进入到LoginServlet(有两种方式:方式一,在web.xml文件中配置servlet拦截器;方式二,不用在w ...