-4
I am trying to save GetDirectories as a txt file, but somewhere my program fails.

private void Form1_Load(object sender, EventArgs e)
{

    var directoryInfo  = new System.IO.DirectoryInfo(@"g:\FTP\");
    int directoryCount = directoryInfo.GetDirectories().Length;

    ...        

    var directoryInfo11  = new System.IO.DirectoryInfo(@"q:\FTP\");
    int directoryCount11 = directoryInfo11.GetDirectories().Length;

    int directoryCountMain = directoryCount + directoryCount2 + 
        directoryCount3 + directoryCount4  + directoryCount5 + 
        directoryCount6 + directoryCount7  + directoryCount8 + 
        directoryCount9 + directoryCount10 + directoryCount11;

    string text = "Total Releases: ";

    // WriteAllText creates a file, writes the specified string to the 
    // file, and then closes the file.
    System.IO.File.WriteAllText(@"c:\test\ik.txt", text + directoryCountMain);
}

I don't get an error or anything, It looks like my code is skipped as I tried placing a MessageBox.Show below the code but It got ignored.
4

3 に答える 3

4

これで問題が解決するわけではありませんが、少なくともコードが短くなり、保守しやすくなります。コードを次のように置き換えます。同じことが行われます。

var ftpDirs = new string[] { "g:/FTP/", ... };
int subDirsCount = 0;

foreach(var dir in ftpDirs)
{
    subDirsCount += new DirectoryInfo(dir).GetDirectories().Length;
}

string text = "Total Releases: ";
File.WriteAllText(@"c:\test\ik.txt", string.Format("{0}{1}", text, subDirsCount));

ファイルの先頭に次を追加することを忘れないでください。

using System.IO;
于 2013-09-07T18:20:16.730 に答える
2

Form1_Load の最初のステートメントにブレークポイントを配置し、ヒットするかどうかを確認します。そうでない場合は、おそらくコードでこのイベントをサブスクライブする必要があります。

ヒットした場合は、コードをステップ実行して、失敗した行を見つけます。

Form_Load はデフォルトでは例外をキャッチしないため、他の行がスキップされたかのように表示されることに注意してください。解決方法はいくつかありますが、上記のリンクに従ってください。

于 2013-09-07T18:32:11.807 に答える
1

あなたが指定したこのディレクトリとパスは存在しないか間違っていると思うので、情報を取得しようとすると例外がスローされます

var directoryInfo11 = new System.IO.DirectoryInfo(@"q:\FTP\");

コードの周りに try catch ブロックを追加し、例外がスローされるかどうかを確認します。

于 2013-09-07T18:38:17.310 に答える