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

时间:2017-08-18 05:26:10

标签: c# klocwork

在本文的帮助下,

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(@"domain\user", FileSystemRights.Modify, AccessControlType.Allow));
            stream.SetAccessControl(security);

            using (var streamWriter = new StreamWriter(stream))
            {
                streamWriter.WriteLine("Hello");
            }
        }

1 个答案:

答案 0 :(得分:3)

我知道回答可能为时已晚。 但是经过多次尝试之后,这就是我如何避免获得此CS.NPS klocwork错误,尽管代码似乎效率不高。 尝试使用SetAccessControl也不满意klocwork错误。

因此,直接使用File.AppendAllText(string path, string content)

,而不是使用streamWriter来编写

示例:

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,content)方法),你可能必须添加锁以避免错误:&# 34;进程无法访问该文件,因为它正被另一个进程使用"。