2012-04-12 11 views
2

Es gibt wahrscheinlich eine einfache Antwort für diese, aber wenn ich DateTime.Now.ToString() zu meinem fileName hinzufügte, addiert es ein Extra \ für jedes \ I haben so C:\Temp wird C:\\Temp, das verursacht, dass die Akte nicht speichert. Dateiname hat zwei umgekehrte Schrägstriche C#

Dies ist der Code in Frage

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

Zum Beispiel die Ausgabe C:\\Temp\\data_12/04/2012 20:08:40.txt

Es sollte C:\Temp\data_12/04/2012 20:08:40.txt

+3

Es ist nicht - das ist nur, wie der Visualizer es zeigt, da ein Backslash maskiert werden muss. – BrokenGlass

Antwort

9

Nope sein könnte, dass die String-wirklich in einzelnen Schrägstriche hat. Drucken Sie es auf die Konsole und du wirst das sehen.

Wenn Sie es im Debugger betrachten, sehen Sie die Backslashes entkommen - aber die Zeichenfolge selbst hat einzelne Backslashes. Das beißt viele Leute :(

+1

Sie hatten jedoch Recht Es ist nicht speichern Ausgabe ist C: \ Temp \ data_04 12 20:43 2012.txt –

+1

Ohne Ihren Code zu sehen, ist es unmöglich zu wissen, was Sie mit "nicht speichern Ausgabe" meinen. –

+0

welche Version von Windows wird schließlich veraltet dann veraltet der Back-Slash wie bedeutet, escape UND Pfadbegrenzer !? – payo

9

Es ist eigentlich die Schrägstriche, die in Dateinamen sind illegal ersetzen die Schrägstriche mit etwas legal und versuchen Sie es erneut

+2

der Doppelpunkt könnte auch ein Problem sein ... – Servy

+0

@Servy, Sie haben Recht, mein eingebauter Parser gerettet auf ersten Fehler. –

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

Ausgang:.. C:\Temp\data_12042012214358.txt

oder Verwendung

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

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

+0

Dies wird nicht kompiliert. Sie sollten doppelte Backslashes oder ein @ vor dem ersten Zitat haben. – Amaranth

+0

Sie können nicht \ T und \ d ohne die @ althouth verwenden Ich glaube, es gibt eine Möglichkeit, \ als Zeichenfolge hinzufügen, ich kann mich nicht erinnern, wie –

+1

"C: \\ Temp \\ data_ {0}. Txt" erlaubt es. Durch das Hinzufügen von \ sagen Sie, dass das nächste Zeichen literal ist. – Amaranth

0

Versuchen Sie ein Format festlegen:

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

der Doppelpunkt wird es brechen – Servy

+0

@Servy Ja, versucht schnell zu sein .. :) –

0

Eigentlich ist es zeigt zwei Schrägstriche in den variablen Wert, da die \ entkommen ist. Wenn Sie den Variablenwert drucken, sollten Sie sehen, dass er nur einen umgekehrten Schrägstrich hat.

Verwandte Themen