不能在 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",像':'这样的特殊字符不能用于创建文件名
文件名中不允许出现以下字符。
您不能在文件名中的任何位置使用以下字符:
- 代字号。
- 数字符号。
- 百分比。
- & 符号。
- 星号。
- 牙套。
- 反斜杠。
- 冒号。
我的 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",像':'这样的特殊字符不能用于创建文件名
文件名中不允许出现以下字符。 您不能在文件名中的任何位置使用以下字符:
- 代字号。
- 数字符号。
- 百分比。
- & 符号。
- 星号。
- 牙套。
- 反斜杠。
- 冒号。