使用shfileoperation实现Windows文件操作的方法详解

作者:甘肃淘贝游戏开发公司 阅读:85 次 发布时间:2023-05-28 14:32:42

摘要:Windows操作系统的用户普遍使用一些常见的文件操作,例如:复制、剪切、删除、重命名等等。当用户想对多个文件或文件夹进行这些操作时,通常会选择通过Windows资源管理器来完成。但是,如果想要在代码中实现这些操作该怎么办呢?在Windows系统中,我们可以通过使用shfileoper...

Windows操作系统的用户普遍使用一些常见的文件操作,例如:复制、剪切、删除、重命名等等。当用户想对多个文件或文件夹进行这些操作时,通常会选择通过Windows资源管理器来完成。但是,如果想要在代码中实现这些操作该怎么办呢?在Windows系统中,我们可以通过使用shfileoperation来实现文件操作。

使用shfileoperation实现Windows文件操作的方法详解

那么,什么是shfileoperation呢?shfileoperation是Windows系统提供的一个函数库,它可以在代码层面实现对文件和文件夹进行复制、删除、移动、重命名等多项操作,它是Windows文件系统的核心部分,封装了复杂的文件操作,为我们提供了更简洁易用的方式来进行文件操作。下面,我们将详细介绍如何使用shfileoperation实现文件操作。

一、shfileoperation函数的介绍

shfileoperation函数是由Shell32.dll动态链接库提供的,它的函数原型为:

```c

int SHFileOperation(

LPSHFILEOPSTRUCT lpFileOp

);

```

其中,参数lpFileOp为文件操作结构体,它定义了文件操作的相关参数,如下:

```c

typedef struct _SHFILEOPSTRUCT {

HWND hwnd;

UINT wFunc;

LPCTSTR pFrom;

LPCTSTR pTo;

FILEOP_FLAGS fFlags;

BOOL fAnyOperationsAborted;

LPVOID hNameMappings;

LPCTSTR lpszProgressTitle;

} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;

```

- hwnd:用来接收操作结果的窗口句柄。一般为 NULL,即默认为不接收结果的窗口。

- wFunc:执行的操作,如复制、删除等等。其中比较常见的值有:

- FO_COPY:复制操作

- FO_DELETE:删除操作

- FO_MOVE:移动操作

- FO_RENAME:重命名操作

- pFrom:源文件路径,可以是单个文件、多个文件或文件夹。

- pTo:目标文件路径,可以是一个文件夹或一个文件名。

- fFlags:操作标志位,比较常见的有:

- FOF_ALLOWUNDO:允许回收站功能,即删除文件会先进入回收站

- FOF_NOCONFIRMATION:不需要用户确认,直接执行操作

- FOF_SIMPLEPROGRESS:显示简单进度条

- fAnyOperationsAborted:指示任何操作是否已被中止。

- hNameMappings:包含旧路径和新路径之间的映射,一般为NULL。

- lpszProgressTitle:操作进度窗口标题,用于显示所执行的操作。

二、使用shfileoperation复制文件

下面,我们以复制文件为例,演示如何使用shfileoperation函数来实现该操作。具体步骤如下:

1. 创建并初始化SHFILEOPSTRUCT结构体

```c

SHFILEOPSTRUCT data = { 0 };

data.hwnd = NULL;

data.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION;

data.pFrom = L"D:\\test.txt"; // 源文件路径

data.pTo = L"D:\\temp\\"; // 目标文件夹路径

data.wFunc = FO_COPY;

data.lpszProgressTitle = L"文件复制中,请稍候...";

```

其中,源文件路径为D盘下的test.txt文件,目标文件夹路径为D盘下的temp文件夹。

2. 调用SHFileOperation函数

```c

int ret = SHFileOperation(&data);

if (ret == 0) {

printf("文件复制成功!\n");

} else {

printf("文件复制失败!\n");

}

```

在执行完操作后,返回值ret为0表示操作成功,否则操作失败。

执行完操作后,我们可以打开目标文件夹temp,可以看到复制的文件已经存在于该文件夹中了。

三、使用shfileoperation删除文件

下面,我们以删除文件为例,演示如何使用shfileoperation函数来实现该操作。具体步骤如下:

1. 创建并初始化SHFILEOPSTRUCT结构体

```c

SHFILEOPSTRUCT data = { 0 };

data.hwnd = NULL;

data.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION;

data.pFrom = L"D:\\test.txt"; // 要删除的文件路径

data.wFunc = FO_DELETE;

data.lpszProgressTitle = L"文件删除中,请稍候...";

```

其中,要删除的文件路径为D盘下的test.txt文件。

2. 调用SHFileOperation函数

```c

int ret = SHFileOperation(&data);

if (ret == 0) {

printf("文件删除成功!\n");

} else {

printf("文件删除失败!\n");

}

```

执行完操作后,我们可以在D盘中查看,发现test.txt文件已被删除。

四、使用shfileoperation移动文件

下面,我们以移动文件为例,演示如何使用shfileoperation函数来实现该操作。具体步骤如下:

1. 创建并初始化SHFILEOPSTRUCT结构体

```c

SHFILEOPSTRUCT data = { 0 };

data.hwnd = NULL;

data.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION;

data.pFrom = L"D:\\test.txt"; // 源文件路径

data.pTo = L"D:\\music\\test.txt"; // 目标文件路径

data.wFunc = FO_MOVE;

data.lpszProgressTitle = L"文件移动中,请稍候...";

```

其中,源文件路径为D盘下的test.txt文件,目标文件路径为D盘下的music文件夹中的test.txt文件。

2. 调用SHFileOperation函数

```c

int ret = SHFileOperation(&data);

if (ret == 0) {

printf("文件移动成功!\n");

} else {

printf("文件移动失败!\n");

}

```

执行完操作后,我们可以查看D盘和D盘下的music文件夹,发现test.txt文件已被移动到music文件夹下。

五、使用shfileoperation重命名文件

下面,我们以重命名文件为例,演示如何使用shfileoperation函数来实现该操作。具体步骤如下:

1. 创建并初始化SHFILEOPSTRUCT结构体

```c

SHFILEOPSTRUCT data = { 0 };

data.hwnd = NULL;

data.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION;

data.pFrom = L"D:\\test.txt"; // 要重命名的文件路径

data.pTo = L"D:\\test_rename.txt"; // 重命名后的文件名

data.wFunc = FO_RENAME;

data.lpszProgressTitle = L"文件重命名中,请稍候...";

```

其中,需要重命名的文件为D盘下的test.txt文件,重命名后的文件名为test_rename.txt。

2. 调用SHFileOperation函数

```c

int ret = SHFileOperation(&data);

if (ret == 0) {

printf("文件重命名成功!\n");

} else {

printf("文件重命名失败!\n");

}

```

执行完操作后,我们可以在D盘下查看,发现test.txt文件已变成了test_rename.txt文件。

六、总结

本文主要围绕SHFileOperation函数,介绍了如何使用shfileoperation实现Windows文件操作。通过使用该函数,我们可以在代码层面更方便地实现文件操作,同时也方便了日常工作的开发。在实际开发中,我们可以根据需求使用不同的参数组合来完成不同的文件操作,如复制、删除、移动、重命名等等。同时,我们还可以根据实际需求来进行相关配置,比如选择是否显示进度条、是否需要确认等等。

  • 原标题:使用shfileoperation实现Windows文件操作的方法详解

  • 本文链接:https://qipaikaifa1.com/jsbk/7880.html

  • 本文由甘肃淘贝游戏开发公司小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与淘贝科技联系删除。
  • 微信二维码

    CTAPP999

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员


    点击这里给我发消息电话客服专员


    在线咨询

    免费通话


    24h咨询☎️:189-2934-0276


    🔺🔺 棋牌游戏开发24H咨询电话 🔺🔺

    免费通话
    返回顶部