将文件路径存储为C#控制台应用程序的变量

时间:2009-03-23 17:23:33

标签: c# console-application appsettings

我正在尝试创建一个生成日志文件的C#控制台应用程序。我想对日志文件的存储位置有一定的灵活性。

我尝试使用Settings.settings文件:

名称:logDrive 输入:string 适用范围:应用 值: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” logFile =“3-23-2009 1:20 PM.log”

有没有人对更好的方法和/或我做错了什么有任何想法/建议?

2 个答案:

答案 0 :(得分:13)

您不能在文件名中包含:。更好的方法可能是使用像

这样的格式
YYYYMMDD_HHMMSS.log

(例如20090323_231245.log

这样做的好处是可以轻松排序,并且不会使用任何无效字符。

你可以使用

来解决这个问题
string logFile = string.Format("{0:yyyyMMdd_HHmmss}.log", DateTime.Now);

备注:

另外,正如评论中所建议的那样,您应该考虑使用Path.Combine来组合您的目录和文件名。这将有助于缓解尾随路径分隔符等问题。

答案 1 :(得分:0)

您还需要在“logDrive”中添加一个尾部斜杠。即:

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

..或使用其他答案中建议的Path.Combine