klocwork 错误:在访问资源"streamWriter"之前没有为它设置权限



在本文的帮助下,

https://support.roguewave.com/documentation/klocwork/en/10-x/cs.nps/

即使在明确设置安全性后,我仍然收到 klocwork 错误。任何解决它的解决方案。

它为下面的代码行提供了错误,

streamWriter.WriteLine("Hello");

这是完整的代码,

using (var stream = new FileStream(@"C:\sample.txt", FileMode.Create))
{
var security = new System.Security.AccessControl.FileSecurity();
security.AddAccessRule(new FileSystemAccessRule(@"domainuser", FileSystemRights.Modify, AccessControlType.Allow));
stream.SetAccessControl(security);
using (var streamWriter = new StreamWriter(stream))
{
streamWriter.WriteLine("Hello");
}
}

我知道现在回答可能为时已晚。 但是在多次尝试之后,这就是我摆脱这个CS的方式。NPS klocwork 错误,尽管代码似乎效率不高。 尝试使用SetAccessControl也不满意klocwork错误。

因此,与其使用 streamWriter 编写,不如直接使用File.AppendAllText(string path, string content)

例:

string Textwritefile = "D:\Working\WriteFile.txt";
string content = "This is testing....";
// Error Code :
using (FileStream fs = new FileStream(Textwritefile , FileMode.Append, FileAccess.Write))
{
fs.SetAccessControl(new FileSecurity(writefilename, AccessControlSections.Access)); 
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(content);  //CS.NPS error comes from this line.
}
}
// Fixed code : 
File.AppendAllText(Textwritefile , content);

但是,如果您碰巧在几分之一秒内写入同一文件(即多次调用File.AppendAllText(Textwritefile,内容(方法(,则可能必须添加锁定以避免收到错误:"该进程无法访问该文件,因为它正在被另一个进程使用"。

相关内容

最新更新