当我关闭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");
}
答案 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");