4

我收到这个错误。即使我已经创建了一个文件夹“CMSExportedData”,但找不到路径“C:\CMSExportedData\Sales-20\07\2012.txt”的一部分。

请帮忙

using (FileStream fs = new FileStream("C:\\CMSExportedData\\Sales-" + DateTime.Now.ToString("dd/MM/yyyy") + ".txt", FileMode.Create))
{
    using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))
    {
        //use stream
    }
}
4

3 回答 3

9

您将日期格式化为文件名的一部分,日期分隔符为斜杠,路径逻辑将其转换为反斜杠(路径分隔符):

'C:\CMSExportedData\Sales-20\07\2012.txt'。

没有 Sales-20 文件夹,也没有 07 文件夹。

解决方案:不要在文件名中使用路径分隔符:)。此解决方案还将日期格式化为年-月-日,因为这会使文件名按时间顺序排序:

"C:\\CMSExportedData\\Sales-" + DateTime.Now.ToString("yyyyMMdd") + ".txt"
于 2012-07-20T06:59:25.580 回答
5

文件名不能包含以下任何字符:

\ / : * ? " < > |

显然您的日期格式使用'/'的是不允许的。建议可以使用“-”作为分隔符,这样您的文件将是:

C:\CMSExportedData\Sales-20-07-2012.txt

为完整起见,可接受的非字母数字字符为:

 ^   Accent circumflex (caret)
   &   Ampersand
   '   Apostrophe (single quotation mark)
   @   At sign
   {   Brace left
   }   Brace right
   [   Bracket opening
   ]   Bracket closing
   ,   Comma
   $   Dollar sign
   =   Equal sign
   !   Exclamation point
   -   Hyphen
   #   Number sign
   (   Parenthesis opening
   )   Parenthesis closing
   %   Percent
   .   Period
   +   Plus
   ~   Tilde
   _   Underscore
于 2012-07-20T07:01:06.577 回答
1

问题是您在文件名中添加了一个带有斜杠的日期!

Windows 文件系统中的每个斜线分隔一个目录。因此,使用您的代码,它将在 Sales-20 文件夹中查找,然后是 07 文件夹,并在该文件夹中尝试查找 2012.txt。

最佳做法是永远不要在文件名中使用斜杠(甚至不要认为您可以在 Windows 中手动使用),因此用“-”符号替换它们或完全删除任何这些字符。

于 2012-07-20T07:01:49.710 回答