2016-08-01 58 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文件名:

  • <(小于)
  • >(大于)
  • :(冒号)
  • “(双(正斜杠)
  • \ kslash)
  • | (竖条或管道)
  • ? (问号)
  • *(星号)

你的文件名包含 '' 由于您所选择的时间格式。

有关更多详细信息,请参阅Naming Files, Paths, and Namespaces at Windows Dev Center。请务必查看该文章,因为它列出的内容比我在这里列出的要多,如ASCII NUL等。个人而言,当我在文件名中包含日期或时间时,我删除任何分隔符并将所有内容放入军事时间。所以,下午2:03是1403,上午5:20是0520.现在是08012016_1217(8/1/2016 12:17 PM)。正如你所看到的,我用下划线分隔“信息”块,就像这里的日期和时间一样。到目前为止,这一直很容易。

0

正如评论中所述,由于Windows操作系统的限制,您不能使用保留字符。这是我该怎么做:

string MyFileName = DateTime.Now.ToString("yyyy-dd-MM_HH-mm-ss");