C#中的文件检查

时间:2011-06-16 13:55:46

标签: c# file

我目前正在用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语句是多么“保护”。这是否可以防止我覆盖重要​​文件?

2 个答案:

答案 0 :(得分:2)

听起来有点偏执,恕我直言。我确保路径不是最终用户可更改的,然后只需要进行足够的单元测试,以便在开发时(而不是部署到客户时)进行开发。

答案 1 :(得分:1)

感觉到你正在过河取水?相反,为什么不通过练习将您的日志文件写入.exe文件的子目录:

Path.GetDirectoryName(Application.ExecutablePath)

或系统特殊文件夹即:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\MyProgram\\logs";

但如果你真的想沿着你建议的路径前进,那么你也可以查看文件属性,“隐藏”和“系统”fileattributes at msdn