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 に答える