【问题标题】:Read text file return 'System.NotSupportedException' exception [duplicate]读取文本文件返回“System.NotSupportedException”异常[重复]
【发布时间】:2017-01-09 17:36:36
【问题描述】:

我尝试逐行读取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 任何可能导致此错误的建议? (文件存在于该路径中)

【问题讨论】:

  • 在声明“链接”时“静态”修饰符是否有效?
  • 可能是您不小心在其中有一个零长度字符。检查这个答案:stackoverflow.com/a/24856870/5572757
  • @Tophandour 很好,你可以复制和粘贴他的文字,@"‪D:\links.txt".Length 显示的确实有一个隐藏字符,删除到@"‪".Length 得到1 应该为零时。查找如何再次转换为位以查看字符实际上是什么..
  • 这个我没看懂,能详细点吗?
  • 旁注:Console.Write(File.ReadAllText(links)); 而不是循环和阅读器是一种更短的实现方式。

标签: c# reader


【解决方案1】:

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

至于字符,我是通过首先复制你的字符串找到的(如果我只是逐字输入你的字符串,那么它不会有隐形字符,它必须从你的文本中复制),然后删除引号之间的所有内容,然后使用位转换器将 IDE 显示为不可见字符的实际字节公开:

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

给予:

E2-80-AA

这是"Unicode Character 'LEFT-TO-RIGHT EMBEDDING' (U+202A)"。请注意,@"‪".Length 在此处返回 1,因为有 1 个不可见字符。

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

一个解决方案是删除整个字符串(包括"'s),然后自己输入,或者只突出显示引号之间的可见字符,然后将它们复制/粘贴到新字符串。这是给你的固定字符串:@"D:\links.txt",你可以复制粘贴进去,你的问题就会得到解决。

【讨论】:

  • 我该怎么做?
  • @DanaYeger 查看我的编辑,了解有关如何修复字符串的一些选项。
  • 我需要放这行吗? Console.WriteLine(BitConverter.ToString(Encoding.UTF8.GetBytes(@""))); ??
  • @DanaYeger 不,我在解释那部分出了什么问题...您需要打开代码,突出显示string links = @"D:\links.txt"; 行上的所有文本,然后点击键盘上的“退格键”删除该文本,然后使用键盘输入:string links = @"D:\links.txt";。这将解决您的问题。
  • 检查看不见的字符的另一种方法是在十六进制编辑器中打开您的代码。在 Visual Studio (2019) 中,右键单击 Solution Explorer 中的文件,选择 Open With...,然后选择 Binary Editor。对于打开的解决方案之外的文件,打开FileOpen,选择文件,单击Open按钮上的箭头并选择Open With...,然后选择Binary Editor
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多