Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 路径格式是非法的_C#_Logfile - Fatal编程技术网

C# 路径格式是非法的

C# 路径格式是非法的,c#,logfile,C#,Logfile,我想问一个简单的问题,但我遇到了一个问题。 我想知道程序执行的时间 Console.WriteLine(DateTime.Now); 我想输出一个.log文件,文件名将有程序执行时间 String path2 = "C:\\temp"+DateTime.Now+".log"; StreamWriter path = File.CreateText(path2); path.WriteLine(DateTime.Now); 但它告诉我路径格式是非法的 我想问另一个问题 string a12 =

我想问一个简单的问题,但我遇到了一个问题。 我想知道程序执行的时间

Console.WriteLine(DateTime.Now);
我想输出一个.log文件,文件名将有程序执行时间

String path2 = "C:\\temp"+DateTime.Now+".log";
StreamWriter path = File.CreateText(path2);
path.WriteLine(DateTime.Now);
但它告诉我路径格式是非法的

我想问另一个问题

string a12 = aaa.Element("a12").tostring();
String path2 = "C:\\temp" + a12.ToString + ".log";
但它告诉我“路径格式是非法的”

我如何解决它


谢谢

您想在带引号的“”字符串中转义\并且DateTime的结果中有字符。现在,这不能在路径中。您还需要转义/替换这些字符。

您希望在带引号的“”字符串中转义\并且在DateTime的结果中有字符。现在,这些字符不能在路径中。您还需要转义/替换它们。

当您将
日期时间放入路径时。现在,您可能会添加无效的字符作为路径(如
分隔符)。这就是您收到此错误消息的原因

您可以将其替换为

string path2 = Path.Combine
               ( @"C:\temp\"
               , DateTime.Now.ToString("yyyy-MM-dd.HH24.mm.ss")
               , ".log"
               );

DateTime.Now
放入路径时,可能会添加无效的字符作为路径(如
分隔符)。这就是您收到此错误消息的原因

您可以将其替换为

string path2 = Path.Combine
               ( @"C:\temp\"
               , DateTime.Now.ToString("yyyy-MM-dd.HH24.mm.ss")
               , ".log"
               );

这是因为DateTime.Now在默认情况下转换为字符串包含时间信息(例如8:53)。分号在路径名中是非法的

如果您的文件名中只包含日期,您可以使用:

String path2 = "C:\\temp" + DateTime.Now.ToString("d") + ".log";
(编辑)对于某些区域性,这仍然可能导致无效值,因此正如其他人指出的,最好使用显式格式化程序:

String path2 = "C:\\temp" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";

这是因为DateTime.Now在默认情况下转换为字符串包含时间信息(例如8:53)。分号在路径名中是非法的

如果您的文件名中只包含日期,您可以使用:

String path2 = "C:\\temp" + DateTime.Now.ToString("d") + ".log";
(编辑)对于某些区域性,这仍然可能导致无效值,因此正如其他人指出的,最好使用显式格式化程序:

String path2 = "C:\\temp" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";

DateTime。根据您的本地系统设置,现在可能包含非法字符。要获得独立于系统安装所在区域性的有效且一致的文件名,您应该手动创建日志文件名,例如:

String path2 = "C:\\temp" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".log";

DateTime。根据您的本地系统设置,现在可能包含非法字符。要获得独立于系统安装所在区域性的有效且一致的文件名,您应该手动创建日志文件名,例如:

String path2 = "C:\\temp" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".log";
因为文件名不能接受由DateTime.Now.ToString(“d”)创建的“/”,因此创建问题


由于文件名不能接受DateTime.Now.ToString(“d”)创建的“/”,因此产生了问题。

我想问另一个问题字符串a12=aaa.Element(“a12”).ToString();字符串路径2=“C:\\temp”+a12.ToString+”.log”;但它告诉我“路径格式非法”,我如何修复它意味着元素(“a12”)转换为字符串后,包含文件名非法的字符。
Path.GetInvalidPathChars
static方法返回非法字符数组。string path2=“C:\\temp”+a12.ToArray()+”.log“我可以在此处使用“System.IO.Path.GetInvalidPathChars”吗?
a12.ToArray()
-您确定要将数组用作文件名的一部分吗?您在这次调用后检查了
path2
变量的内容吗?我想问另一个问题字符串a12=aaa.Element(“a12”).tostring();字符串path2=“C:\\temp”+a12.tostring+”.log;但它告诉我“路径格式非法”,我如何修复它意味着元素(“a12”)转换为字符串后,包含文件名非法的字符。
Path.GetInvalidPathChars
static方法返回非法字符数组。string path2=“C:\\temp”+a12.ToArray()+”.log“我可以在此处使用“System.IO.Path.GetInvalidPathChars”吗?
a12.ToArray()
-是否确实要将数组用作文件名的一部分?调用后是否检查了
path2
变量的内容?