这是我的logging.cs,通常可以在用户桌面中创建“日志文件夹”和Datetime.csv。
home.ctp
在我的主类中,我使用记录日志的方法只是将“ Test”输入到csv文件中
public static class Logging
{
public static string _Path = $"C:\\Users\\{Environment.UserName}\\Desktop\\Logs\\{DateTime.Now.ToString("dd.MM.yyyy")}.csv";
static StreamWriter _File = new StreamWriter(_Path);
public static void getPath(string path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
public static void logging(string message)
{
_File.Write(message);
}
}
但是当没有“ Logs-Folder”时,我得到一个例外,即路径的一部分不存在。如果我手动创建路径,则会得到该路径已经存在的例外,因此Logging类中的If-Statement出了点问题。但是我不知道到底是怎么回事
答案 0 :(得分:4)
您的路径是文件而不是目录。您需要从路径
创建目录 String Path = $"C:\\Users\\{Environment.UserName}\\Desktop\\Logs\\{DateTime.Now.ToString("dd.MM.yyyy")}.csv";
String Directory = System.IO.Path.GetDirectoryName(Path);
if (System.IO.Directory.Exists(Directory)==false) {
System.IO.Directory.CreateDirectory(Directory);
}
if (System.IO.File.Exists(Path)==false) {
System.IO.File.Create(Path);
}
答案 1 :(得分:1)
您的_Path变量实际上不是目录,而是文件名。
您使用System.IO.Path.GetDirectoryName(_Path)
答案 2 :(得分:1)
您的测试是否存在目录,但提供了文件路径。这是一些您可以用来修复它的代码:
public static string _Path = $"C:\\Users\\{Environment.UserName}\\Desktop\\Logs";
public static string _Filename = $"{DateTime.Now.ToString("dd.MM.yyyy")}.csv";
static StreamWriter _File = new StreamWriter(_File);
答案 3 :(得分:1)
尝试以不同的方式使用DirectoryPath
和FilePath
。
将您的StreamWriter
移到方法范围内,以便我们在文件中Write
内容之后关闭此流。
public static class Logging
{
public static string _DirectoryPath = $"C:\\Users\\{Environment.UserName}\\Desktop\\Logs";
public static string _FileName = $"{DateTime.Now.ToString("dd.MM.yyyy")}.csv";
public static void getPath(string path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
public static void logging(string message)
{
StreamWriter _sw = new StreamWriter(_DirectoryPath + "\\" + _FileName);
_sw.Write(message);
_sw.Flush();
_sw.Close();
}
}
从Program.cs
开始。
Logging.getPath(Logging._DirectoryPath);
Logging.logging("Test");
输出: