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

Posted

技术标签:

【中文标题】想检查 IF File.Exists 来定义 StreamReader,然后搜索特定的行【英文标题】:Want to check IF File.Exists to define StreamReader, to then searching for specific line 【发布时间】:2021-06-10 19:56:12 【问题描述】:

我不经常写代码,我的知识水平还很低。我想不通的事情需要帮助

    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, "Read Log", "[Success] Script End String has been found");
                Report.Log(ReportLevel.Info, "Read Log", string.Format("Line number: '0'", counter));
                return;
            
       
            counter++;
        
        
        Report.Log(ReportLevel.Failure, "Read Log", "[Missing] Anvil Script End String NOT found");
        file.Close();
    

起初,while 在这两个语句中并且运行良好,但我想在该语句之外使用 While,但我得到 The name 'file' does not exist in the current context (CS0103) 和我不知道如何从我的 If 语句中获取 file 的值。

【问题讨论】:

【参考方案1】:

您需要将变量移出 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"]);
    

这样你肯定在文件中有一个价值。编码愉快。

【讨论】:

非常感谢,它成功了。我以为我试过了,但我想我保留了 StreamReader file = new StreamReader(ConfigController.Home + TestSuite.Current.Parameters["LogPath"]);在声明中,这就是它失败的原因。 @PascalD。伟大的。请考虑接受答案。

以上是关于想检查 IF File.Exists 来定义 StreamReader,然后搜索特定的行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 If Not File.Exists 覆盖现有的 XML 文件

File.exists() 为现有文件返回 false

iPhone System.IO.File.Exists() 不工作

Java file.exists() 错误

iPhone System.IO.File.Exists()无效

检查文件是否存在