【问题标题】:Illegal characters in path from class类路径中的非法字符
【发布时间】:2025-12-24 20:20:14
【问题描述】:

我陷入了一个愚蠢的错误,但我无法弄清楚,你能帮帮我吗?

什么 我正在尝试创建一个具有多种方法的类,这些方法将在给定的文本文件中执行许多不同的正则表达式。这个文本文件从主程序传递到类。 然后该类使用文本文件并通过实例化类中的每个对象来执行我从主程序调用的每个正则表达式。

问题 当我传递文件时,我在类中创建了一个函数来计算文件的行数并循环遍历每一行,计算这种正则表达式匹配发生的次数。

  //CountLines Function
    static long CountLinesInFile(string f)
    {
        long count = 0;
        using (StreamReader r = new StreamReader(f))
        {
            string line;
            while ((line = r.ReadLine()) != null)
            {
                count++;
            }
            return count;

        }
    }

这个 CountLines 函数将提供要被对象循环的行,如下所示:

private string configfile;    
    public string ConfigFile
    {
        get { return this.configfile; }
        set { this.configfile = value; }
    }

    public void objects()
    {
        //Counting Object Group Network
        int objCount = Lines(configfile)
            .Select(line => Regex.Matches(line, @"object-group network").Count)
            .Sum();

        //Ending of Counting Object Group Network
    }

从主程序我试图调用类并通过这样做来获取结果:

Cisco newCisco = new Cisco();
        newCisco.ConfigFile = richTextBox1.Text;
        newCisco.objects();

我被困在using (StreamReader r = new StreamReader(f)) 行的课程中,路径中有非法字符:

异常:抛出:“路径中有非法字符。” (System.ArgumentException) 引发了 System.ArgumentException:“路径中有非法字符。” 时间:8/13/2014 1:58:01 AM 线程:主线程[1304]

我知道我犯了一个错误,但我可以找到在哪里,如果你能帮助我找到解决这个问题的方法,我将不胜感激。

【问题讨论】:

  • 检查不可打印字符和问号。
  • 我无法理解需要计算行数,而且如果没有示例文件路径(相同格式不同的单词)也很难看到非法字符在哪里
  • 你在哪里调用 CountLinesInFile?你作为字符串 f 传递了什么?
  • 我正在尝试计算 Program.cs(主文件)中的行数并计算类 (cisco.cs) 中的正则表达式匹配项

标签: c#


【解决方案1】:

您收到的错误很可能是由您尝试打开 StreamReader 的文件名引起的,我认为该文件名无效。如果检查它不能解决您的问题,请您发布您尝试读取的文件名吗?

【讨论】:

  • 嗨,Andrej,我更改了文件名并且它可以工作,但我仍然无法传递对传递的文件执行正则表达式的类。我不知道是什么导致了不正确的路径,因为如果不在单独的 class.c 文件中,相同的代码也可以工作。
  • Lines(configfile) 函数有什么作用?修复文件名后出现什么错误?