DateTime now = DateTime.now;
string dateString = string.Format(@"Z:\test\{0}.bmp",now.ToString("s"));
bitmap.Save(dateString);
现在这让我无法访问文件路径错误。显然它与时间部分的“:”字符有关(至少当我给出now.ToString(“d”)时它保存得很好)。 有什么想法导致这个?谢谢。
答案 0 :(得分:7)
“s”格式将创建类似以下内容的文件名:
2009-06-15T13:45:30.bmp
由于冒号,这不是有效的文件名。在调用ToString后用冒号替换冒号,或者使用不同的格式。
请注意,“d”也不会一直有效,因为可以在名称中包含“/”,具体取决于文化。
就个人而言,我建议像“yyyyMMdd-HHmmss”这样的东西会给你类似的东西
20090615-134530.bmp
答案 1 :(得分:2)
无论代码如何,Windows文件系统都不允许在文件名中使用冒号(或其他几个“特殊”字符)。所以问题发生在操作系统级别,而不是代码中。
您需要以不同方式删除这些字符和/或format the timestamp,以将其用作文件名。
答案 2 :(得分:1)
某些字符在Windows上的文件名中无效 - 请参阅this link。这与c#无关。
答案 3 :(得分:1)
这是由Windows文件系统引起的,该系统不允许文件名中包含:
。
答案 4 :(得分:1)
':'是用于命名文件的无效字符。在尝试保存文件之前,您需要确定一些其他有效字符来替换“:”。
答案 5 :(得分:1)
public static class SPStringUtils
{
public static string MakeFilename(this DateTime dt)
{
return dt.ToString("yyyyMMdd-HHmmss");
}
public static string MakeFilename(this DateTime dt, string format)
{
return string.Format(format, MakeFilename(Now));
}
}
...
Console.WriteLine(Now.MakeFilename(@"c:\logs\log{0}.log");
答案 6 :(得分:0)
文件名中不能有':',这就是原因。