我目前正在用C#编写一个记录器,希望能够更改我正在写的文件,如下所示:
[ConditionalAttribute("DEBUG")]
static void SetPath(string path)
{
if (File.Exists(path) && (File.GetAttributes(path) & FileAttributes.Normal) == FileAttributes.Normal)
fileName = path;
else
throw new InvalidOperationException("File seems important...");
// Other logic here.
}
我意识到程序员(甚至是我)可能会意外地混淆路径并删除重要的东西。这是一种有效的恐惧吗?即使这个项目只有两个程序员,我想知道是否有办法确保不会覆盖更重要的文件。如果它们不存在就没关系,那么它们就会被创造出来。
我的另一个想法是日志文件应该有一个特定的结尾(例如“.log”),并且任何不包含该结尾的文件都不能被覆盖。我不确定我的if语句是多么“保护”。这是否可以防止我覆盖重要文件?
答案 0 :(得分:2)
听起来有点偏执,恕我直言。我确保路径不是最终用户可更改的,然后只需要进行足够的单元测试,以便在开发时(而不是部署到客户时)进行开发。
答案 1 :(得分:1)
感觉到你正在过河取水?相反,为什么不通过练习将您的日志文件写入.exe文件的子目录:
Path.GetDirectoryName(Application.ExecutablePath)
或系统特殊文件夹即:
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\MyProgram\\logs";
但如果你真的想沿着你建议的路径前进,那么你也可以查看文件属性,“隐藏”和“系统”fileattributes at msdn