【问题标题】:C# period('.') being added to file path when entered via command lineC# period('.') 通过命令行输入时被添加到文件路径
【发布时间】:2019-03-25 18:25:59
【问题描述】:

我正在为家庭作业编写一个程序,该程序旨在从命令行获取两个程序参数。第一个是要在文本文件中搜索的单词,第二个是要搜索的文件的文件路径。程序查找单词,如果找到,则打印该单词在文件中的编号(即单词编号 10)。

问题是当我输入两个参数时:

homework "C:\\Users\\louiz\\source\\repos\\File and exception hw\\File and 
exception hw\\bin\\Debug\\File_for_homework_11_17"

我收到找不到文件的错误消息。 Visual Studio 中的错误消息似乎表明由于某种原因文件路径末尾有句点。

这个句点不是我输入的文本的一部分(见下文)

下面是我的代码。在这一点上相当简单,我打算添加一个找不到文件的异常处理程序,并在找不到搜索的单词时打印一条消息。但我想确保我可以先读取文件。我知道通过命令行完成这些操作可能不是最简单的方法,但这是分配所需要的。我似乎无法让它工作。任何建议将不胜感激。

class Program
{
    static void Main(string[] args)
    {
        string line;
        string lookFor = args[0];
        int count = 0;

        StreamReader f = new StreamReader(args[1]);

        while((line = f.ReadLine()) != null)
        {
            String[] strings = line.Split(new char[]{' '});
            if (strings[count] == lookFor)
            {
                Console.WriteLine("{0} was word number {1} in the file.", lookFor, count);
            }

            count++;
        }
        Console.WriteLine("{0}", args[1]);
        Console.ReadLine();
    }
}

【问题讨论】:

  • 我很确定您在那里使用了错误的斜杠。该点也属于“异常消息打印输出”部分,而不是实际的字段路径。
  • 反斜杠只能在代码中的字符串文字中转义(\\ ),而不是在命令行中。试试homework c:\Users\louiz...
  • 您确定该文件没有任何扩展名,例如.txt?如果是,您也需要提供(Explorer 可能不会显示扩展程序,但您仍需要提供)。
  • File_for_homework_11_17 是您的 VS 解决方案的一部分吗?获取它的属性并告诉我们 Copy To Output 的值是什么。

标签: c# file-io command-line arguments command-line-arguments


【解决方案1】:

句号属于异常消息,您的字符串在此消息中用单引号打印。

所以问题确实是找不到文件。检查它是否真的存在。也许缺少文件扩展名?有拼写错误吗?

此外,您不需要双斜线,但它们不会造成伤害。

【讨论】:

  • 这并不能真正解决问题。实际上 OP 只是 假设 点与问题有关,事实并非如此。
  • @HimBromBeere 没错。添加了更多细节
猜你喜欢
  • 2011-02-17
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 2020-02-21
  • 1970-01-01
  • 2012-04-10
  • 2015-09-27
相关资源
最近更新 更多