2012-07-20 132 views
2

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

请帮助请

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 
    } 
} 
+3

'20 \ 07 \ 2012':嗯,你真的认为在一条路径上有一个斜杠日期是个好主意吗? – 2012-07-20 06:58:15

+1

您是否有一个Sales-20子文件夹,其中包含您要编写名为2012.txt的文件的07子文件夹? – 2012-07-20 06:59:05

+2

这与sql-server-2008有什么关系? – 2012-07-20 07:00:05

回答

7

你格式化日期作为文件名的一部分,这样的日期分隔符是斜杠,这得到转换为反斜杠(路径分隔符)的路径逻辑:

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

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

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

"C:\\CMSExportedData\\Sales-" + DateTime.Now.ToString("yyyyMMdd") + ".txt" 
+0

谢谢@phoog – Newbie 2012-07-20 07:11:34

+1

Else use DateTime.Now.ToFileTime() – Aneef 2012-07-20 07:14:34

+0

@Aneef ToFiletime如何提供帮助?它只是返回一个Int64。作为文件名的按时间顺序组成部分,这并不是很有用。 – phoog 2012-07-20 07:17:25

4

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

\/: * ? " < > | 

显然你的约会格式化使用'/',这是不允许的。有人建议可以用“ - ”作为分隔符让你的文件将是:

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

只是为了保持完整性,非字母数字charachters accebtable是:

^ 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 
+0

谢谢你亲爱的先生 – Newbie 2012-07-20 07:12:43

+0

@Newbie欢迎:) – 2012-07-20 07:14:56

1

的问题是,要添加日期到你的文件名,用斜杠!

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

最好的做法是不要在文件名中使用斜杠(甚至不认为你可以在Windows中手动操作),因此用' - '符号替换它们或删除任何字符。

+0

谢谢@gerald Versluis – Newbie 2012-07-20 07:12:29

相关问题