我正在使用C#(.NET)开发应用程序,并且在处理文件锁定时遇到问题.
我完全控制了(A)和(B)的来源,所以我可以修改它们中的任何一个.
如何在应用程序(A)运行时阻止用户修改/删除文件,同时允许应用程序(A)读/写,应用程序(B)读取?
Clo*_*ger 16
使用FileShare.Read仅允许从其他应用程序读取.您可以通过在应用程序A运行时打开流来锁定文件.您需要NonClosingStreamWrapper避免在处置时丢弃流StreamWriter(这会自动发生using)
NonClosingStreamWrapper通过Jon Skeet可以在这里找到
应用程序启动时使用它来锁定文件
FileStream fileStream = new FileStream(file, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
Run Code Online (Sandbox Code Playgroud)
写入文件时使用
using (StreamWriter sr = new StreamWriter(new NonClosingStreamWrapper(fileStream)))
{
// File writing as usual
}
Run Code Online (Sandbox Code Playgroud)
当应用程序结束时使用它来释放文件
fileStream.Close();
Run Code Online (Sandbox Code Playgroud)