2015-11-15 16 views
-3

我想問一個關於我的代碼在c#中的簡單問題....我知道有很多主題具有相同或相似的主題/代碼結果。但是我需要將我的代碼交給學校,所以我不能只使用Stackoverflow或其他頁面上的最佳解決方案。我向我的老師展示了我的代碼,現在需要修復一個小錯誤。c#check-> create->檢查文件夾循環

該代碼是關於使用控制檯報告備份文件,因此在第一步中我檢查是否存在文件夾。第二步是報告該文件夾是否存在或不存在,如果沒有代碼創建該文件夾,並重新檢查......

SITUATION : CONSOLE REPORT 

folders doesnt exist: 
02:02:06 directory for backup Exist ... can continue 
02:02:05 directory for backup DOESNT EXIST ... creating required folders... 

folders exist : 
02:02:55 directory for backup Exist ... can continue 
02:02:54 directory for backup Exist ... can continue 

在第1例報告是確定的,但在第2 ,我的代碼告訴我相同的信息兩次......我不能讓我的代碼正常工作..

這裏是我的代碼:

public void checkbackupfolders() { 
     do { 
      create_backup_folders(); 
      } while (create_backup_folders() == false); 
    } 

    public bool create_backup_folders() 
    { 
     string path = "\\BACKUP\\" + Globals.hostname; 
     if (Directory.Exists(path)) 
     { 
      consolecho("directory for backup Exist ... can continue"); 
      return true; 
     } 
     else 
     { 
      consolecho("directory for backup DOESNT EXIST ... creating required folders..."); 
      Directory.CreateDirectory("\\BACKUP\\" + Globals.hostname); 
      return false; 
     } 
    } 

回答

1

你爲什麼調用方法兩次這裏?:

do { 
    create_backup_folders(); 
} while (create_backup_folders() == false); 

這會讓事情變得令人困惑,正如你現在發現的那樣。只需在每次循環迭代中調用一次並存儲該方法的結果。然後在迴路條件下使用該存儲的結果:

var canContinue = false; 
do { 
    canContinue = create_backup_folders(); 
} while (canContinue == false); 
+1

絕對您的建議看起來更好。它仍然很不清楚,爲什麼即使有一個循環 - 「CreateDirectory」不能成功,所以調用它一次就足夠了(特別是因爲它會創建所有必要的子文件夾) –

+0

@AlexeiLevenkov:沒錯,整個塊代碼似乎有點愚蠢。雖然也許這與''有關,所以我不能使用最好的解決方案「,這是一個聲明,我不能籠罩我的頭: -/ – David

+0

你的大衛,有很多解決方案,我必須在之前發佈我的第一個可用的軟:) – cenekhavelka