Ich möchte Protokolle für unterschiedliche Aktionen erstellen. Ich erstelle jeden Tag eine neue Datei mit dem Datum als Dateiname. Nun, wenn das Verzeichnis nicht existiert, möchte ich, dass das System das Verzeichnis für mich erstellt. Ich habe nach diesem Thema gesucht und alle Antworten kommen zur selben Sache: Verwenden Sie Directory.CreateDirectory(FilePath);
. Dies scheint jedoch nicht zu funktionieren. Könnte etwas offensichtlich fehlen.Verzeichnis erstellen, wenn nicht vorhanden
Hier ist der Code:
public class ElderlyHomeLog : ILog
{
private const string FilePath = "/Logs/WZCLogs/";
public void MakeLog(string text)
{
if (!Directory.Exists(FilePath))
{
Directory.CreateDirectory(FilePath);
}
string logFile = DateTime.Now.ToString("ddMMyyyy") + ".txt";
if (!File.Exists(HostingEnvironment.ApplicationPhysicalPath + FilePath + logFile))
{
FileStream f = File.Create(HostingEnvironment.ApplicationPhysicalPath + FilePath + logFile);
f.Close();
}
using (StreamWriter sw = new StreamWriter(HostingEnvironment.ApplicationPhysicalPath + FilePath + logFile, true))
{
sw.WriteLine(text);
sw.Close();
}
}
}
Fehlermeldung:
Eine Ausnahme vom Typ 'System.IO.DirectoryNotFoundException' in mscorlib.dll aufgetreten, wurde aber im Benutzercode nicht behandelt
Zusätzliche Informationen: Es wurde kein Teil des Pfads 'C: \ Benutzer \ *** \ Quelle \ Repos \ Projekt \ Projektname \ Logs \ WZCLogs \ 31032016.txt' gefunden.
Fehlermeldung oder Beschreibung? –
Haben Sie versucht, einen absoluten Pfad für das zu erstellende Verzeichnis anzugeben? Wenn Sie 'Path.Combine' verwenden, um Pfade zu kombinieren, müssen Sie sich keine Gedanken über Verzeichnistrennzeichen machen. –
Die FilePath-Variable ist wahrscheinlich nicht vollständig? –