gpt4 book ai didi

windows - 以编程方式复制文件夹而不解析 Windows 中的硬链接(hard link) (Win32 API)

转载 作者:可可西里 更新时间:2023-11-01 11:21:41 31 4
gpt4 key购买 nike

我想复制整个文件夹而不解析硬链接(hard link)

例子:

Folder1
|
+---File1
File2
HardLink3 -> File3

(使用 fsutil hardlink createmklink 创建的 HardLink3)

我要复制这个文件夹到

Folder2
|
+---File1
File2
HardLink3 -> File3

将 Folder2\HardLink3 保持为指向 File3 的硬链接(hard link)

是否有 Win32 API 调用来复制整个文件夹这种语义,或者,如果我需要做 CopyFile/CreateHardLink逐个文件,检查给定文件是否存在的 API 调用是什么是否是硬链接(hard link)?

最佳答案

如果您绝对确定这就是您想要执行的操作,那么确定文件是否具有多个链接(即“是硬链接(hard link)”)的最简单方法可能是 GetFileInformationByHandle

返回的 nNumberOfLinks 值对于普通文件将为 1,如果文件是(或具有)硬链接(hard link)则大于 1。

如果我正确理解了您的场景,检查文件是否硬链接(hard link)到一组特定文件(“共享文件夹”中的文件)而不是硬链接(hard link)可能更明智到任何地方的任何文件。为此,请查看硬链接(hard link)与原始文件相同的文件 ID(nFileIndexHighnFileIndexLow)。

在后一种情况下,作为优化,您可以使用 GetFileInformationByHandleExFileIdBothDirectoryInfo 选项来读取给定目录中所有文件的名称和文件 ID单次操作。

关于windows - 以编程方式复制文件夹而不解析 Windows 中的硬链接(hard link) (Win32 API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7420168/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com