2012-04-12 89 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

事實上,它顯示在變量值的兩個反斜槓,因爲\轉義。如果你打印變量值,你應該看到它只有一個反斜槓。