gpt4 book ai didi

c# - 检查未锁定的文件是否打开

转载 作者:太空宇宙 更新时间:2023-11-03 15:13:11 26 4
gpt4 key购买 nike

一些程序(画图等图像程序,记事本和写字板等文本编辑器等)打开文件,将内容加载到内存中,然后释放文件锁。有没有办法判断一个程序是否正在使用该文件,即使它没有被锁定?

例如,即使 image1.bmp 在 Paint 中打开,我的程序也可以覆盖磁盘上的 image1.bmp 副本,因为该文件未锁定。现在,在 Paint 中打开的 image1.bmp 副本与磁盘上的 image1.bmp 副本不同。

我的程序是用 C# 编写的。我通常使用这种方法来检查文件是否被锁定,但在上述情况下它不起作用。 Is there a way to check if a file is in use?

有什么解决办法吗?

最佳答案

“现在在画图中打开的 image1.bmp 副本” - 这是您的错误 - 该文件不再在画图中打开。它被打开,阅读,然后关闭。 Paint 根本不会使文件保持打开状态 - 它在 RAM 内存中只有其内容的副本。换句话说 - 您在 MS Paint 中看到图片并不意味着该文件已打开。

这类似于将文件借给某人,然后他复印并归还 - 该人不再“持有”该文件,他有一份单独的副本。而且,仅通过查看文档,我们无法知道在历史上的某个时刻谁可能制作了它的副本。

另一种表达方式是伪代码:

File file = Open("image.png");
Image img = ImageFromFile(file);
file.Close();

...

img.Save("image.png");

这里根本没有文件被打开,RAM 中只有其内容的副本。

注意:我实际上检查了 Paint - Process Explorer 可以显示打开的句柄,我在 Paint 中打开了一个文件,但根本没有列出该名称文件的句柄。

关于c# - 检查未锁定的文件是否打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40240064/

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