2013-09-07 2 views
-3

Я пытаюсь сохранить GetDirectories как txt-файл, но где-то моя программа не работает.WriteAllText Not Working

private void Form1_Load(object sender, EventArgs e) 
    { 

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

     var directoryInfo2 = new System.IO.DirectoryInfo(@"h:\FTP\"); 
     int directoryCount2 = directoryInfo2.GetDirectories().Length; 

     var directoryInfo3 = new System.IO.DirectoryInfo(@"i:\FTP\"); 
     int directoryCount3 = directoryInfo3.GetDirectories().Length; 

     var directoryInfo4 = new System.IO.DirectoryInfo(@"j:\FTP\"); 
     int directoryCount4 = directoryInfo4.GetDirectories().Length; 

     var directoryInfo5 = new System.IO.DirectoryInfo(@"k:\FTP\"); 
     int directoryCount5 = directoryInfo5.GetDirectories().Length; 

     var directoryInfo6 = new System.IO.DirectoryInfo(@"l:\FTP\"); 
     int directoryCount6 = directoryInfo6.GetDirectories().Length; 

     var directoryInfo7 = new System.IO.DirectoryInfo(@"m:\FTP\"); 
     int directoryCount7 = directoryInfo7.GetDirectories().Length; 

     var directoryInfo8 = new System.IO.DirectoryInfo(@"n:\FTP\"); 
     int directoryCount8 = directoryInfo8.GetDirectories().Length; 

     var directoryInfo9 = new System.IO.DirectoryInfo(@"o:\FTP\"); 
     int directoryCount9 = directoryInfo9.GetDirectories().Length; 

     var directoryInfo10 = new System.IO.DirectoryInfo(@"p:\FTP\"); 
     int directoryCount10 = directoryInfo10.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); 
    } 

Я не получаю сообщение об ошибке или что-нибудь, это выглядит как мой код пропускается, как я попытался поместить MessageBox.Show ниже код, но он был проигнорирован.

+0

Где вы разместили окно сообщения ?. Объясните свою проблему немного больше. –

+0

В конце концов, все, что я хочу, это получить все папки с жестких дисков и сохранить сумму в txt-файле, но я ничего не получаю. –

+0

Он выглядит пропущенным, вероятно, потому, что он * пропущен * - убедитесь, что на самом деле подписано 'Load event'. –

ответ

3

Это не решит вашу проблему, но, по крайней мере, сократит ваш код и сделает его пригодным для обслуживания. Замените свой код следующим, он будет делать то же самое.

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

Пожалуйста, ответьте на вопрос –

+5

@DavidHeffernan. Мой ответ - это не тот тип ответа, который я бы предоставил в комментариях. Достаточно долго, чтобы заслужить место среди других ответов. И я сказал там, что это не прямой ответ, а полезная идея. –

2

Поместите точку останова на первый оператор в Form1_Load и проверьте, не попал ли он. Если нет, вам, вероятно, придется подписаться на это событие в вашем коде.

Если он попал в цель, пройдите через свой код и найдите линию, где он не работает.

Обратите внимание, что Form_Load does not catch exceptions by default, поэтому он будет выглядеть как если бы другие линии были пропущены. Есть способы решить эту проблему, просто следуйте приведенной выше ссылке.

0

Я думаю, что это каталоги и путь, который вы дали Doesnt существует или нет поэтому бросать исключение при попытке получить информацию

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

Добавить попробовать поймать блок вокруг кода и посмотреть, если его метания excpetion.