C#:我能使用StreamWriter创建动态文件名吗?

5

我想让程序将数据写入一个以时间戳命名的文件中。简单来说,我想把时间戳保存到一个字符串变量中,并以此为基础创建文件。例如,“航班清单 2010年10月14日 上午1:38:29.txt”。

那么正确的方法是什么呢?

我尝试了以下代码:

string timeStamp = DateTime.Now.ToString(), filePath = string.Format("Flight Manifest {0}", timeStamp);
MessageBox.Show(filePath);

StreamWriter outputFile = new StreamWriter(filePath);

请忽略消息框,那只是为了测试字符串是否正确构建。 - Sinaesthetic
你有什么问题吗?之后你只需要在流中编写并处理它。 - remi bourgarel
给定的路径格式不受支持。 - Sinaesthetic
你可能需要明确控制日期格式,因为我想大多数操作系统都会对文件名中的冒号感到不适。尝试使用 DateTime.Now.ToString("yyyyMMddTHHmmss")。 - Paul Ruane
@Paul Ruane 那一定是这个问题。当我控制格式时,它可以工作。我原本以为直接使用 @ 符号会有帮助,但我没有想到要加冒号。谢谢 :) - Sinaesthetic
1个回答

8

将时间戳添加到文件名的更好方法是使用某种格式将日期时间转换为字符串,然后将其附加到文件名中。以下是一个例子 -

string datetimeString = string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}.txt",DateTime.Now);

如果您不使用格式化字符串,则会出现像“/”和“:”这样的字符,这些字符不支持作为文件名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接