不能在 StreamWriter 文件名中使用变量

Cannot use variables in StreamWriter filename

我的 Windows 移动应用在写入文本文件时出现错误。我首先创建一个文件名:

filename = "IncomingUnit_" + GlobalVar.getDate() + ".txt";

这在控制台上正确打印为 'IncomingUnit_2017053111:22:57.txt'。

然后我使用 StreamWriter 向该文件写入行。

using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filename, true))
{
    foreach (Record _record in records)
    {
        writer.Write(_record);
    }
}

这给了我一个例外,文件没有创建: ''System.ArgumentException' 类型的第一次机会异常发生在 mscorlib.dll'

如果我取出 GlobalVar.GetDate 它会创建文件并写入数据。

filename = "IncomingUnit.txt";

如何将日期插入我的文件名?

冒号 ":" 文件名中的字符无效。

在 StreamWriter 中使用之前,只需将其替换为有效字符即可:

filename = filename.Replace(":", "_");

According to MSDN,不能在文件名中使用以下字符:

Tilde (~)
Number sign (#)
Percent (%)
Ampersand (&)
Asterisk (*)
Braces ({ })
Backslash (\)
Colon (:)
Angle brackets (< >)
Question mark (?)
Slash (/)
Plus sign (+)
Pipe (|)
Quotation mark (")

这是因为您使用的文件名"IncomingUnit_2017053111:22:57.txt",像':'这样的特殊字符不能用于创建文件名

文件名中不允许出现以下字符。 您不能在文件名中的任何位置使用以下字符:

  • 代字号。
  • 数字符号。
  • 百分比。
  • & 符号。
  • 星号。
  • 牙套。
  • 反斜杠。
  • 冒号。