重命名已关闭的文件

时间:2016-08-01 19:10:51

标签: c# .net

当我关闭C#窗口时,我希望将时间戳附加到文件名。但是,当我运行以下代码时,我收到了这样的错误:

  

的 'System.NotSupportedException'

  

“给定路径的格式不是   支持“。

有没有修改参数的方法?

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");
}

3 个答案:

答案 0 :(得分:5)

Windows文件名中不允许使用以下保留字符:

  • < (小于)
  • > (大于)
  • :(冒号)
  • “(双引号)
  • /(正斜线)
  • \(反斜杠)
  • | (竖杆或竖管)
  • ? (问号)
  • *(星号)

由于您选择的时间格式,您的文件名包含“”。

有关详细信息,请参阅Naming Files, Paths, and Namespaces at Windows Dev Center。请务必查看该文章,因为它列出了我在此处列出的内容,例如ASCII NUL等。

就个人而言,当我在文件名中包含日期或时间时,我删除任何分隔符并将所有内容放入军事时间。因此,下午2:03将是1403,上午5:20将是0520.现在它将是08012016_1217(2016年8月1日下午12:17)。正如您所看到的,我通过下划线分隔“信息”块,就像这里的日期和时间一样。到目前为止,它一直很容易使用。

答案 1 :(得分:2)

正如一些人评论的那样,最近的问题是文件名中的冒号。

一般情况下,如果您想确保文件名不包含非法字符,您可以执行类似

的操作
for (char c in Path.GetInvalidFileNameChars())
    filename=filename.Replace(c, '_');

答案 2 :(得分:0)

如评论中所述,由于Windows操作系统限制,您无法使用保留字符。我就是这样做的:

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