想要检查 IF File.Exists 定义 StreamReader,然后搜索特定行

问题描述

我不经常写代码,我的知识水平还很低。我需要帮助解决我无法弄清楚的事情

    public static void SearchScriptEnd()
    {
        int counter = 0;
        string line;
        Report.Log(ReportLevel.Info,"Read Log","Starting to find: Test Suite Ended");
        var text = "Test Suite Ended";
        
        if (File.Exists(ConfigController.Home + TestSuite.Current.Parameters["LogPath"]))
        {
            StreamReader file = 
                new StreamReader(ConfigController.Home + TestSuite.Current.Parameters["LogPath"]);
        }else{
            
            StreamReader file = 
                new StreamReader(TestSuite.Current.Parameters["LogPath"]);
        }
        
        while ((line = file.ReadLine()) != null)
        {
            if (line.Contains(text))
            {
                Report.Log(ReportLevel.Info,"[Success] Script End String has been found");
                Report.Log(ReportLevel.Info,string.Format("Line number: '{0}'",counter));
                return;
            }
       
            counter++;
        }
        
        Report.Log(ReportLevel.Failure,"[Missing] Anvil Script End String NOT found");
        file.Close();
    }

起初,while 在两个语句中都运行良好,但我想在该语句之外使用 While,但我得到名称文件”在当前上下文中不存在 (CS0103) 和我不知道如何从我的 If 语句中获取文件的值。

解决方法

您需要将变量从 if 范围中取出。试试这个:

    StreamReader file;
    if (File.Exists(ConfigController.Home + TestSuite.Current.Parameters["LogPath"]))
    {
        file = new StreamReader(ConfigController.Home + TestSuite.Current.Parameters["LogPath"]);
    }else{            
        file = new StreamReader(TestSuite.Current.Parameters["LogPath"]);
    }

那样你肯定在文件中有一个值。快乐编码。