Speichern Dateipfad als Variable für C # Konsole-Anwendung
-
21-08-2019 - |
Frage
Ich versuche, eine C # Konsolenanwendung zu erstellen, die eine Protokolldatei generieren. Ich möchte eine gewisse Flexibilität haben, mit dem die Protokolldatei gespeichert werden.
Ich habe versucht, die Settings.settings mit Datei mit:
Name: logDrive Typ: Zeichenkette Zweck: Anwendung Wert: C: \ Scripts \ Logs
In meinem Code verwende ich:
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);
Wenn Sie die oben Kompilieren ich die Fehlermeldung „Das Format der angegebenen Pfad wird unterstützt.“
Wenn es hilft, die Werte für:
logDrive = "C: \ Scripts \ ServiceDesk \ Logs" logFile = "2009.03.23 01.20 PM.log"
Hat jemand irgendwelche Gedanken / Empfehlungen für einen besseren Ansatz und / oder was ich falsch mache?
Lösung
Sie können keine :
in einem Dateinamen enthalten. Ein besserer Ansatz könnte sein, ein Format zu verwenden, wie
YYYYMMDD_HHMMSS.log
(z. 20090323_231245.log
)
Dies hat den Vorteil, leicht sortierbar zu sein, und es verwendet keine ungültigen Zeichen.
Sie können diese erhalten mit
string logFile = string.Format("{0:yyyyMMdd_HHmmss}.log", DateTime.Now);
Weitere Informationen:
Wie auch in den Kommentaren vorgeschlagen, sollten Sie die Verwendung Path.Combine
betrachten zu Ihrem Verzeichnis und Dateinamen zu kombinieren. Dies wird helfen, Probleme zu beheben, mit Pfadtrennhinter, etc.
Andere Tipps
Sie müssen auch einen Schrägstrich zu Ihrem ‚logDrive‘ hinzuzufügen. Das heißt:
logDrive = "C:\Scripts\ServiceDesk\Logs\"
.. oder Verwendung Path.Combine wie in der anderen Antwort vorgeschlagen