2017-05-31 38 views
0

在写入文本文件时,我在Windows Mobile应用程序中出现错误。我首先创建一个文件名:无法在StreamWriter文件名中使用变量

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"; 

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

+0

如果你想使用最新的ToString(“YYYYMMDDHHMMSS”)创建的文件名 – athar13

回答

7

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

就在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 (") 
+0

是的是解决它。有没有什么方法可以使用冒号字符,还是我需要使用像破折号这样的替代字符? (IncomingUnit_2017053111-22-57.txt) –

+0

@DaleTownsend不,没有办法使用冒号。你需要使用替代字符。 –

1

这是由于文件名“ IncomingUnit_2017053111:22:57.txt“您使用的特殊字符如':'不能用于创建文件名称

+0

下面是Windows文件名中保留字符的完整列表:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#file_and_directory_names – apk

+0

是的,确切地说,这就是为什么没有创建文件,因为文件名由windows使用的保留字符组成 –

1

下面的字符是不允许的以文件名称。 不能在文件名中的任意位置使用以下字符:

  • Tilde。
  • 数字标志。
  • 百分比。
  • &符。
  • Asterisk。
  • 大括号。
  • 反斜线。
  • 冒号。
相关问题