gpt4 book ai didi

c++ - 我可以在不锁定包含该文件的文件夹的情况下在 C++ 中读取 Windows 中的文件吗

转载 作者:行者123 更新时间:2023-11-27 23:54:22 25 4
gpt4 key购买 nike

我有一个连续读取日志文件的 C++ 程序(例如:C:/temp/file.txt)。但是,当程序运行时,我希望能够删除/重命名包含被监视文件的文件夹('temp')。

目前,我正在使用 CreateFile()。

        CreateFile(
szFilename,
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL)

每当我删除/重命名文件夹时,我都会收到以下错误:“操作无法完成,因为其中的文件夹或文件已在另一个程序中打开”

有没有办法在不锁定文件的情况下读取/打开文件?

最佳答案

您可以使用 CreateHardLinkW 在其他地方创建指向此文件的硬链接(hard link)并打开它而不是原始文件。这样,原始文件(实际上也是硬链接(hard link))和包含它的文件夹可以重命名/删除,但文件本身仍然可以访问。请注意,此方法对底层文件系统类型、硬链接(hard link)位置和访问权限有一些限制。

关于c++ - 我可以在不锁定包含该文件的文件夹的情况下在 C++ 中读取 Windows 中的文件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43758975/

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