1

假设我在目录 D1 中有一个名为 f1.txt 的文件。
如果我将此文件剪切粘贴到资源管理器中,我会得到一个名为 f1-(Copy).txt 的好文件。我认为在早期版本中我会得到 f1(2).txt。
无论如何,关键是我可以通过仅在 Win32 中的文件路径以编程方式执行此操作。我可以说 CopyFileWithCleverDupNamingScheme 之类的东西吗?我不想编写自己的重复命名方案。并且任何这样的 api 显然都需要返回新名称。
TIA

4

2 回答 2

3

您可以IFileOperation::CopyItem使用SetOperationFlagsFOF_RENAMEONCOLLISION

于 2013-06-22T11:18:04.610 回答
1

使用 WinAPI 中的CopyFile函数。这是不言自明的:)

BOOL WINAPI CopyFile(
  _In_  LPCTSTR lpExistingFileName,
  _In_  LPCTSTR lpNewFileName,
  _In_  BOOL bFailIfExists
);

您可以将 .new 附加到旧文件名吗?

您将必须检查是否已经存在任何此类文件,但这并不难,只需检查您要写入的文件是否已经存在,如果是,请添加一些数字并不断增加,直到找到未使用的文件名。

为此,您可以将FindFirstFileFindNextFile结合使用

于 2013-06-22T10:47:00.643 回答