C# 找不到路径的一部分';C:\

C# 找不到路径的一部分';C:\,c#,directory,C#,Directory,我得到这个错误。即使我已经创建了一个文件夹“cmsexportedata” 找不到路径“C:\CMSExportedata\Sales-20\07\2012.txt”的一部分 请帮忙 using (FileStream fs = new FileStream("C:\\CMSExportedData\\Sales-" + DateTime.Now.ToString("dd/MM/yyyy") + ".txt", FileMode.Create)) { using (StreamWrite

我得到这个错误。即使我已经创建了一个文件夹“cmsexportedata” 找不到路径“C:\CMSExportedata\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
    }
}

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

'C:\cmsexportedata\Sales-20\07\2012.txt'

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

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

"C:\\CMSExportedData\\Sales-" + DateTime.Now.ToString("yyyyMMdd") + ".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

问题是,您正在向文件名添加日期,并带有斜杠

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


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

20\07\2012
:嗯,你真的认为在路径上用斜杠标注日期是个好主意吗?你有一个Sales-20子文件夹,其中包含一个07子文件夹,你想在其中写入一个名为2012.txt的文件吗?这与sql-server-2008有什么关系?我认为/甚至不是有效的路径字符拉斐尔:你说得对,我错了,费利斯:喜欢你的详细解释。谢谢我意识到了我的错误马克:因为我使用的是sql server 2008和vb 2010?亚历克斯:是的,你是对的。我的错误是其他人使用DateTime.Now.ToFileTime()@Aneef ToFileTime有什么帮助?它只返回一个Int64。作为文件名的按时间顺序排列的组件,这没有多大帮助。@phoog,如果我改为yyyyMMdd,我真的需要更改我的电脑和服务器的时间格式以匹配它吗?@Newbie你不必这样做。DateTime在内部以数字二进制格式存储;计算机的显示格式仅设置日期时间的默认字符串表示形式。对于上面的表达式,您使用的不是默认的字符串表示,而是自定义的字符串表示。由于您将其用作文件名的一部分,因此操作系统仅将其视为字符串。它甚至不知道这是约会;它可以是任何字符串。
 ^   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