StreamWriter 在具有日期时间的路径上抛出“文件名、目录名或卷标语法不正确”[重复]

问题描述 投票:0回答:3

最初我只使用

TextWriter iterationLogger = new StreamWriter(Iteration log.txt");
效果很好,但我想在文件中添加时间戳并尝试了这个:

TextWriter iterationLogger = new StreamWriter($"{DateTime.Now} Iteration log.txt");

然后 StremWritter 抛出 “文件名、目录名或卷标语法不正确”

我尝试了各种参数(附加、编码、@、$)和格式,例如

string.Format("{0} Iteration log.txt", DateTime.Now)
但问题依然存在

据我所知,只有一个字符串 StreamWritter 就在程序文件夹内创建了文件,但是随着在字符串内添加 DateTime 阻止了文件创建,发生了一些变化?

c# filestream
3个回答
1
投票

像这样使用

DateTime.Now
使用 DateTime 的默认 ToString() 实现,这会导致类似
28.02.2023 17:21:45
的结果(也取决于您的区域设置)。但是,通常不允许在文件或目录名称中使用冒号。 例如,您可以使用
$"{DateTime.Now:yyyy-MM-dd_HH-mm}"
之类的东西。


0
投票

在处理文件或目录时,您应该检查您形成的行是否有非法字符并删除(替换)它们。

你的问题的答案在这里有详细说明。

Windows和Linux目录名中禁止使用哪些字符?


0
投票

DateTime.Now
包含
/
:
字符。文件名不能包含此字符。

你必须给一个

valid date format
。例如:

StreamWriter($"{DateTime.Now.ToString("yyyyMMddHHmmSS")} Iteration log.txt");
© www.soinside.com 2019 - 2024. All rights reserved.