gpt4 book ai didi

c# - 锁定文件以进行写入/删除,同时允许任何进程读取

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

我正在用 C# (.NET) 开发应用程序,但在处理文件锁定时遇到了问题。

  • 我的主应用程序 (A) 需要对特定文件的读/写权限。
  • 一个单独的应用程序 (B) 需要对同一文件的读取权限。
  • 我需要防止用户在我的应用程序 (A) 运行时编辑或删除文件。应用程序 (A) 是长期运行的。在 (A) 运行时不得删除该文件,即使它没有被主动读取或写入也是如此。

我完全控制了 (A) 和 (B) 的源代码,因此我可以修改其中任何一个。

如何在应用程序 (A) 运行时阻止用户修改/删除文件,同时允许应用程序 (A) 读/写,应用程序 (B) 读?

最佳答案

使用 FileShare.Read 只允许从其他应用程序读取。您可以通过在应用程序 A 运行时打开流来锁定文件。您需要一个 NonClosingStreamWrapper 来避免在处理您的 StreamWriter 时处理流(这会随着 using 自动发生)

NonClosingStreamWrapper by Jon Skeet 可以从 here 找到

例子

当应用程序启动时使用它来锁定文件

FileStream fileStream = new FileStream(file, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);

写入文件时使用

using (StreamWriter sr = new StreamWriter(new NonClosingStreamWrapper(fileStream)))
{
// File writing as usual
}

当应用程序结束时使用它来释放文件

fileStream.Close();

关于c# - 锁定文件以进行写入/删除,同时允许任何进程读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3279071/

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