Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 如何将文件复制到同一目录(win32)_Winapi - Fatal编程技术网

Winapi 如何将文件复制到同一目录(win32)

Winapi 如何将文件复制到同一目录(win32),winapi,Winapi,假设我在目录D1中有一个名为f1.txt的文件。 如果我在资源管理器中剪切粘贴这个文件,我会得到一个名为f1-Copy.txt的好文件。我想在早期版本中,我会得到f12.txt。 不管怎么说,关键是我可以在Win32中仅给定文件路径的情况下以编程方式执行此操作。我可以说像CopyFileWithCleverDupNamingScheme这样的话吗。本质上我不想编写自己的重复命名方案。显然,任何这样的api都需要返回新名称。 TIA使用WinAPI中的函数。这是自我解嘲: BOOL WINAPI

假设我在目录D1中有一个名为f1.txt的文件。 如果我在资源管理器中剪切粘贴这个文件,我会得到一个名为f1-Copy.txt的好文件。我想在早期版本中,我会得到f12.txt。 不管怎么说,关键是我可以在Win32中仅给定文件路径的情况下以编程方式执行此操作。我可以说像CopyFileWithCleverDupNamingScheme这样的话吗。本质上我不想编写自己的重复命名方案。显然,任何这样的api都需要返回新名称。 TIA使用WinAPI中的函数。这是自我解嘲:

BOOL WINAPI CopyFile(
  _In_  LPCTSTR lpExistingFileName,
  _In_  LPCTSTR lpNewFileName,
  _In_  BOOL bFailIfExists
);
您可以将.new附加到旧文件名中

你必须检查是否有这样的文件已经存在,但这并不难,只要检查你想写的文件是否已经存在,如果是,添加一些数字并不断增加,直到找到一个不使用的文件名

为此,您可以结合使用WinAPI中的函数。这是自我解嘲:

BOOL WINAPI CopyFile(
  _In_  LPCTSTR lpExistingFileName,
  _In_  LPCTSTR lpNewFileName,
  _In_  BOOL bFailIfExists
);
您可以将.new附加到旧文件名中

你必须检查是否有这样的文件已经存在,但这并不难,只要检查你想写的文件是否已经存在,如果是,添加一些数字并不断增加,直到找到一个不使用的文件名


为此,您可以与

一起使用,您可以与SetOperationFlags和FOF_Rename碰撞一起使用。

您可以与SetOperationFlags和FOF_Rename碰撞一起使用。

查找SHFileOperation和FOF_Rename碰撞标志。查找SHFileOperation和FOF_Rename碰撞标志。这不是OP要求的。复制例程应该选择新文件名本身。我不知道是否有任何内置函数返回正确/智能重命名的文件名,至少我找不到。但是文件复制功能会在发生冲突时自动重命名,嗯,是的,我的答案不对。不是OP要求的。复制例程应该选择新文件名本身。我不知道是否有任何内置函数返回正确/智能重命名的文件名,至少我找不到。但是文件复制功能会在碰撞时自动重命名,好吧,那么是的,我的答案不是正确的。