Проверка файлов в C # - PullRequest
       1

Проверка файлов в C #

0 голосов
/ 16 июня 2011

Я сейчас пишу регистратор на 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 ]

2 голосов
/ 16 июня 2011

Звучит слегка излишне параноидально, ИМХО. Я бы удостоверился, что путь не может быть изменен конечным пользователем, а затем имел бы достаточно модульных тестов, чтобы выяснить это при разработке, когда материал ломается (а не при развертывании у клиентов).

1 голос
/ 16 июня 2011

Чувствуете ли вы, что вы переходите реку за водой? Вместо этого, почему бы не записать свои файлы журналов в любой подкаталог файла .exe:

Path.GetDirectoryName(Application.ExecutablePath)

или системная специальная папка, например:

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

Но если вы действительно хотите пойти по пути, который вы предложили, то вы также можете проверить атрибуты файла "hidden" и "system" fileattributes в msdn

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...