2015-11-15 18 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