【问题标题】:c# check->create->check folder loop时间:2018-10-10 标签:c#check->create->check folder loop
【发布时间】:2016-02-16 08:48:39
【问题描述】:

我想问一个关于我在 c# 中的代码的简单问题 .... 我知道有很多主题具有相同或相似的主题/代码结果。但是我需要将我的代码交给学校,所以我不能只使用 Stackoverflow 或其他页面上的最佳解决方案。我向老师展示了我的代码,现在需要修复一个小错误。

代码是关于使用控制台报告备份文件的,因此在第一步中我检查文件夹是否存在。第二步是报告文件夹存在或不存在,如果不存在,代码会创建此文件夹并重新检查...

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

在第一个示例中,报告正常,但在第二个示例中,我的代码两次告诉我相同的信息...我只是无法让我的代码正常工作..

这是我的代码:

    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;
        }
    }

【问题讨论】:

    标签: c# while-loop backup directory file-exists


    【解决方案1】:

    你为什么在这里调用方法两次?:

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

    正如您现在所发现的那样,这会让事情变得混乱。只需在每次循环迭代时调用方法一次并存储方法的结果。然后在循环条件中使用存储的结果:

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

    【讨论】:

    • 你的建议肯定更好看。仍然很不清楚为什么甚至有一个循环 - CreateDirectory 不能成功,所以调用它一次就足够了(特别是因为它也会创建所有必要的子文件夹)
    • @AlexeiLevenkov:没错,整个代码块看起来有点傻。虽然这可能与"so i cant use the best solution" 有关,但这是我无法完全理解的声明:-/
    • 你的大卫,在发布我的第一个可用软件之前,我必须学习很多解决方案 :)
    猜你喜欢
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2014-11-13
    • 2017-09-02
    • 2015-02-05
    相关资源
    最近更新 更多