Недоступный файл

1

Следующая строка позволяет мне получить доступ к моему файлу результатов:

// Write the string to a file.
public System.IO.StreamWriter file = new System.IO.StreamWriter
("C:\\TestDev\\Visual Stidio 2012 Developments\\Training\\Project   
1\\HSMTESTClient_03\\HSMTESTClient\\Results\\Results.txt");

После этого я использую следующее для записи в файл:

      file.WriteLine(" TX: " + message + "\r\n");

Все в порядке. Однако в этой разработке (программа шифрования/дешифрования) мне удалось внедрить другой проект под названием SafeNetAdaptor. До сих пор все попытки записать в мой файл результатов не удались. Мне нужно иметь возможность регистрировать результаты различных операций во время этого очень сложного процесса. Чтобы принять участие в отладке, я был готов создать другой файл результатов для этой части - однако, хотя файл был создан, никаких результатов не было написано. Почему это так? Спасибо за вашу помощь и внимание.

Теги:

2 ответа

1

Не хорошая идея :)

Рассмотрите возможность использования структуры ведения журнала. Их много. Примерами являются

  • 0
    Спасибо Стефано - буду расследовать со временем.
0
public System.IO.StreamWriter file

Просто кричит "ПЛОХО" мне.

Общий доступ к файлу через публичное поле? Плохая идея. Вы хотите предоставить инкапсуляцию. Вы в идеале хотите предоставить семантику удаления. Вам нужно обработать буферизацию. Вы хотите быть независимыми от фактической реализации - вместо публичного StreamWriter выставлять класс ведения журнала (и, как писал Стефано, вы обычно используете готовую структуру ведения журнала).

StreamWriter требует ручной промывки, он не записывается, как только вы это делаете. Даже очистка StreamWriter ничего не гарантирует, поскольку она все еще может быть в буферах записи. Операции ввода-вывода практически никогда не выполняются непосредственно на устройстве. Кроме того, промывка после каждой попытки архива приведет к ухудшению вашей производительности - не очень хорошо, поскольку регистрация должна иметь как можно меньшее влияние на производительность.

И не забудьте правильно закрыть файл, когда закончите. В идеале, если вы обрабатываете только регистрацию для вспомогательной операции, просто оберните все это при using:

using (var file = File.CreateText("results.txt"))
{
  var log = new MyLoggingManager(file);

  DoStuff(log);
}

Там может появиться множество других проблем, связанных с совместным доступом к файлам, разрешениями, одновременным доступом и многими другими. Просто используйте структуру ведения журнала :)

  • 0
    Извиняюсь за поздний ответ и спасибо за ваши комментарии Luaan. Да, я согласен с вашими комментариями относительно записи данных, заметив случайные журналы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню