2012-07-20 130 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

相關問題