2012-04-12 10 views
2

おそらく簡単な答えがありますが、ファイル名にDateTime.Now.ToString()を追加すると、すべての\が追加されます。C:\TempC:\\Tempになります。ファイル名にバックスラッシュが2つあります。C#

これは、出力がC:\\Temp\\data_12/04/2012 20:08:40.txt

可能性が例えばそれはC:\Temp\data_12/04/2012 20:08:40.txt

+3

これはそうではありません。これは、バックスラッシュをエスケープする必要があるため、ビジュアライザーが表示する方法です。 – BrokenGlass

答えて

9

いやでなければなりません質問

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

のコードで、その文字列は本当にで単一のバックスラッシュを持っている。それを印刷しますあなたはそれを見るでしょう。

デバッガで見ると、バックスラッシュがエスケープされていることがわかりますが、文字列自体にはバックスラッシュが1つあります。 。。これは、多くの人々を刺さ:(

+1

あなたはどこにいるのですか?出力が保存されていない場所C:\ Temp \ data_04 12 20:43 2012.txt –

+1

コードを一切表示せずに、「出力を保存しない」という意味を知ることはできません。 –

+0

どのバージョンのウィンドウが最終的に廃止され、エスケープとパス区切り文字の両方を意味するとしてバックスラッシュが廃止されるでしょうか? – payo

9

それは実際のファイル名で違法であるスラッシュで前方には法的なものでスラッシュ交換して、もう一度試して

+2

コロンが問題になるかもしれません... – Servy

+0

@Servy、あなたは正しいです、私のパーサーが最初のエラーで救済されました。 –

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

+0

@ althouthなしで\ Tと\ dを使用することはできません。文字列として\を追加する方法があると思います。どのように覚えていないのですか? –

+1

"C:\ Temp \\ data_ {0} .txt"それを可能にする。 \を追加することによって、次の文字はリテラルであると言います。 – Amaranth

0

書式を設定してみてください:\がエスケープされているので

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

コロンはそれを壊します – Servy

+0

@セイビーはい、迅速にしようとする.. :) –

0

実際には、変数の値の2つのバックスラッシュを示しています。変数値を出力すると、バックスラッシュが1つしかないことがわかります。

関連する問題