2012-04-12 173 views
2

对此可能有一个简单的答案,但是当我将DateTime.Now.ToString()添加到我的文件名时,它为每个\添加了一个\我有这样的C:\Temp变为C:\\Temp,导致文件不保存。文件名有两个反斜杠C#

这是问题

String fileName = @"C:\Temp\data_" + DateTime.Now.ToString() + ".txt"; 

的代码,比如输出可C:\\Temp\\data_12/04/2012 20:08:40.txt

应该C:\Temp\data_12/04/2012 20:08:40.txt

+3

这不是 - 这只是可视化工具如何显示它,因为反斜杠必须被转义。 – BrokenGlass 2012-04-12 19:29:25

回答

9

不,该字符串真的在单反斜线。它打印出到控制台,你会看到。

如果您在调试器中查看它,您会看到反斜杠被转义 - 但字符串本身具有单反斜线。这叮咬很多人:(

+1

你在哪里但是它没有保存输出是C:\ Temp \ data_04 12 20:43 2012.txt – 2012-04-12 19:48:20

+1

没有看到你的任何代码,不可能知道你的意思是“不保存输出”。 – 2012-04-12 19:48:59

+0

什么版本的Windows最终会弃用,然后过时的反斜杠意味着都逃避和路径分隔符!? – payo 2012-04-12 21:14:30

9

它实际上是正斜杠是在文件名非法更换前的东西法律斜线,然后再试一次

+2

冒号也可能是个问题... – Servy 2012-04-12 19:30:45

+0

@Servy,你是对的,我的解析器建立在第一个错误上。 – 2012-04-12 19:31:35

0
String fileName = String.Format(@"C:\Temp\data_{0}.txt",DateTime.Now.ToString("ddMMyyyyHHmmss")); 

输出:。C:\Temp\data_12042012214358.txt

或使用

String fileName = String.Format(@"C:\Temp\data_{0}.txt", DateTime.Now.ToString("dd.MM.yyyy HH-mm-ss")); 

输出:C:\Temp\data_12.04.2012 21-45-03.txt

+0

这不会编译。你应该在第一个引号前加双反斜线或@。 – Amaranth 2012-04-12 19:37:21

+0

你不能使用\ T和\ d没有@ althouth我相信有一种方法来添加\作为一个字符串,我不记得如何 – 2012-04-12 19:40:00

+1

“C:\\ Temp \\ data_ {0} .txt”允许它。通过添加一个\你说的下一个字符是字面的。 – Amaranth 2012-04-12 19:41:39

0

尝试设置格式:

String fileName = @"C:\Temp\data_" + DateTime.Now.ToString("MM d HH mm yyyy") + ".txt"; 
+0

冒号会打破它 – Servy 2012-04-12 19:32:50

+0

@Servy是的,试图快速.. :) – 2012-04-12 19:35:54

0

事实上,它显示在变量值的两个反斜杠,因为\转义。如果你打印变量值,你应该看到它只有一个反斜杠。