读取文本文件返回'System.NotSupportedException'异常

时间:2016-09-01 18:07:46

标签: c# reader

我尝试逐行阅读Text文件:

static void Main(string[] args)
{
    int counter = 0;
    string line;
    string links = @"‪D:\links.txt";

    // Read the file and display it line by line.
    System.IO.StreamReader file = new System.IO.StreamReader(links);
    while ((line = file.ReadLine()) != null)
    {
        Console.WriteLine(line);
        counter++;
    }

    file.Close();

    // Suspend the screen.
    Console.ReadLine();
}

出了错误:

  

发生了类型为“System.NotSupportedException”的未处理异常   在mscorlib.dll中

     

附加信息:不支持给定路径的格式。

我正在使用Windows 10 什么可能导致此错误的任何建议? (该文件存在于此路径中)

1 个答案:

答案 0 :(得分:1)

问题是你的字符串中有一个不可见的字符。我不知道他们是如何到达那里的,others已经猜到源代码经过了一个程序,比如Word,它修改了你不知道的文本。或者你从某个地方复制并粘贴它,并且某处有一个看不见的字符。

至于角色,我发现它首先复制你的字符串(如果我只是逐字地输入你的字符串然后它赢得有隐形字符,它必须从您的文本),然后删除引号之间的所有内容,然后使用位转换器公开IDE显示为不可见字符的实际字节:

Console.WriteLine(BitConverter.ToString(Encoding.UTF8.GetBytes(@"‪")));

给出:

E2-80-AA

哪个是"Unicode Character 'LEFT-TO-RIGHT EMBEDDING' (U+202A)"。请注意,由于1个不可见的字符,@"‪".Length会返回1

这个字符串,我手工输入而不是从你的字符串中复制,不会有不可见的字符:Console.WriteLine(BitConverter.ToString(Encoding.UTF8.GetBytes(@"")));并只返回一个字符串.Empty with a长度为0。

解决方案是删除整个字符串(包括")并自行输入,或者只突出引号之间的可见字符并复制/将它们粘贴到一个新字符串中。以下是一个固定字符串:@"D:\links.txt",您可以复制并粘贴该字符串,您的问题将得到解决。