捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >API档案 > 正文
4 2017.06

DeleteFile

点击次数:1242 更新时间:2017-6-4 20:11:18  【打印此页

原文链接 -> 传送门

函数功能:

DeleteFile 函数用于删除一个已存在的文件。

若想将此操作实现为事务型操作,使用 DeleteFileTransacted 函数。


API 函数原型:

注释:_In_ 说明该参数是输入的,_opt_ 说明该参数是可选的

BOOL WINAPI DeleteFile(
  _In_ LPCTSTR lpFileName
);

参数解析:

参数

含义

lpFileName

1. 指向将执行删除操作的文件的文件名

2. 在此函数的 ANSI 版本中,文件名长度被限制为不超过 MAX_PATH 字节。若要将文件名长度扩展为 32767 个宽字符,请调用此函数的 Unicode 版本,且在文件路径中添加前缀 "\\?\"。更多信息,参见 Naming a File

3. 友情提示:在 Windows 10 的 1607 版本中使用此函数 Unicode 版本(DeleteFileW)时,你可以通过相关设置去移除文件名 MAX_PATH 个字符的限制,而不用添加前缀 "\\?\"。具体参见 Naming Files, Paths, and Namespaces 中的“Maximum Path Limitation”部分。



返回值:

1. 如果函数调用成功,返回值是非 0;

2. 如果函数调用失败,返回值是 0。

想获取具体错误信息,调用 GetLastError 函数。


备注:

1. 如果一个程序试图删除一个不存在的文件,则 DeleteFile 函数执行失败,返回错误信息 ERROR_FILE_NOT_FOUND 。如果文件是只读文件,则函数执行失败,返回错误信息 ERROR_ACCESS_DENIED 。

以下是关于文件删除、文件移动、文件关闭的一些技巧:

  • 若想删除一个只读文件,你必须先移除其只读属性
  • 若想删除或重命名文件,你必须要么拥有文件的删除权限,要么在其父目录上,拥有删除子文件的权限
  • 若想在一个文件夹中,递归地删除文件,调用 SHFileOperation 函数
  • 若想移除一个空目录,调用 RemoveDirectory 函数
  • 若想关闭一个打开的文件,调用 CloseHandle 函数


2. 当你创建一个目录时,如果你拥有此目录除了删除权限、删除子文件权限之外的所有权限,且新创建文件的访问控制列表(Access Control lists)继承自此目录,则此时你创建一个文件却没有权限删除它。另一方面,当你在创建一个文件时,对于所返回的文件句柄,你可以获取所有所需要的权限。
如果你在创建文件时,请求删除权限,你可以通过返回的文件句柄实现此文件的删除或者重命名,但却无法通过其他句柄实现此功能。更多信息,参见 File Security and Access Rights

3. 当程序试图删除一个文件时,如果此文件已经被打开用于普通的 I/O 操作或者作为内存映射文件被使用,则 DeleteFile 函数调用失败(当有其他指向此文件的句柄被打开时,必须指定 FILE_SHARE_DELETE 标记位才能执行删除操作)。

4. DeleteFile 函数标记文件,使之在关闭时被删除。因此,在指向此文件的所有句柄都被关闭之前,文件删除操作不会发生。但是文件被标记之后,对此文件执行 CreateFile 函数将会失败,错误代码为 ERROR_ACCESS_DENIED。

5. 符号连接相关:

如果文件路径指向一个符号链接,则符号链接会被删除,而符号链接指向的文件则不会被删除。如果要删除符号链接指向的文件,你必须调用 CreateFile 函数且指定 FILE_FLAG_DELETE_ON_CLOSE 标记位。

6. 在 Windows 8 和 Windows Server 2012 中,此函数为以下技术所支持:

技术

  是否支持

Server Message Block (SMB) 3.0 protocol

SMB 3.0 Transparent Failover (TFO)

SMB 3.0 with Scale-out File Shares (SO)

Cluster Shared Volume File System (CsvFS)

Resilient File System (ReFS)



需求:

Minimum supported client

Windows XP [仅桌面应用程序]

Minimum supported server

Windows 2003 服务器版 [仅桌面应用程序]

Header

FileAPI.h (包含于 Windows.h)
在 Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 和 Windows XP 系统上的 WinBase.h (包含于 Windows.h)

Library

Kernel32.lib

DLL

Kernel32.dll

Unicode and ANSI names

DeleteFileW (Unicode) 和 DeleteFileA (ANSI)


 

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1242 更新时间:2017-6-4 20:11:18  【打印此页

上一条:CloseHandle

下一条:FlushFileBuffers

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修