2016-08-01 4 views
0

C#ウィンドウを閉じると、ファイル名にタイムスタンプを追加することを望みます。私は以下のコードを実行したときしかし、私は、このようなエラーを得た:クローズドファイルの名前を変更する

'System.NotSupportedException'

"The given path's format is not supported.".

は、パラメータを変更する方法はありますか?

private void Window_Closed(object sender, EventArgs e) 
{ 
    sw_bea.Close(); 
    String file_Time = DateTime.Now.ToString("h:mm:ss tt").ToString(); 
    System.IO.File.Move(@"C:\Users\abc\Desktop\tmp_bea.txt", @"C:\Users\abc\Desktop\tmp_bea"+file_Time+".txt"); 
} 
+7

ような何かを行うことができます。 – LarsTech

答えて

2

最近の問題はファイル名のコロンです。一般的に

あなたはファイル名が不正な文字が含まれていないことを確認したい場合、あなたはあなたがそれらのコロンを削除する必要が

for (char c in Path.GetInvalidFileNameChars()) 
    filename=filename.Replace(c, '_'); 
+0

OPの問題はおそらく最初に ':'文字を避けるだけで簡単に解決できますが、 'Path.GetInvalidFileNameChars()'について知ることは非常に便利です。 (私はこれまでに聞いたことがなかった。)チップに感謝! –

5

次の予約文字は、Windowsのファイル名で許可されていません。

  • <(より大きい)>
  • (未満)
  • :(コロン)
  • 」(二重見積もり)
  • /(スラッシュ)
  • \(bac kslash)
  • | (垂直バーまたはパイプ)
  • ? (疑問符)
  • *(アスタリスク)

あなたのファイル名は '' を含むため、あなたが選択した時刻形式に。

詳細はNaming Files, Paths, and Namespaces at Windows Dev Centerを参照してください。 ASCII NULなど、ここに記載した以上の記事をチェックしてください。

個人的には、ファイル名に日付や時刻を含めると、区切り記号を削除してすべてを軍事的な時間に入れます。したがって、2:03 PMは1403、5:20 AMは0520になります。今は08012016_1217(2011年8月1日12:17 PM)になります。ご覧のとおり、日付と時刻の場合と同様に、「情報」のブロックをアンダースコアで区切ります。それまではこれまでの作業はかなり簡単でした。

0

コメントに記載されているとおり、Windowsオペレーティングシステムの制限により予約文字を使用することはできません。これは私がそれを行う方法です:

string MyFileName = DateTime.Now.ToString("yyyy-dd-MM_HH-mm-ss"); 
関連する問題