Сохранение пути к файлу в качестве переменной для консольного приложения C #

StackOverflow https://stackoverflow.com/questions/674373

Вопрос

Я пытаюсь создать консольное приложение на C #, которое сгенерирует файл журнала.Я хотел бы иметь некоторую гибкость в отношении того, где будет храниться файл журнала.

Я попытался использовать файл Settings.settings с:

Имя:логДрайв Тип:строка Область действия:Применение Ценность:C:\Scripts\Logs

В моем коде я использую:

string logFile = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
logFile = logFile.Replace(@"/", @"-").Replace(@"\", @"-") + ".log";
string logDrive = Properties.Settings.Default.logDrive;
StreamWriter output = new StreamWriter(logDrive + logFile);

При компиляции вышеописанного я получаю сообщение об ошибке "Формат данного пути не поддерживается".

Если это поможет, значения для:

logDrive = "C:\Scripts\ServiceDesk\Logs" Файл журнала = "3-23-2009, 13:20 вечера.log"

Есть ли у кого-нибудь какие-либо мысли / рекомендации по лучшему подходу и / или что я делаю неправильно?

Это было полезно?

Решение

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

YYYYMMDD_HHMMSS.log

(например, 20090323_231245.log)

Преимущество этого заключается в том, что его легко сортировать, и в нем не используются недопустимые символы.

Вы можете получить это с помощью

string logFile = string.Format("{0:yyyyMMdd_HHmmss}.log", DateTime.Now);

Примечания:

Кроме того, как было предложено в комментариях, вам следует рассмотреть возможность использования Path.Combine чтобы объединить ваш каталог и имя файла.Это поможет устранить проблемы с разделителями конечных путей и т.д.

Другие советы

Вам также нужно будет добавить косую черту в конце вашего "logDrive".То есть:

logDrive = "C:\Scripts\ServiceDesk\Logs\"

..или используйте Path .Объедините, как предложено в другом ответе

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top