C# 读取文本文件返回';System.NotSupportedException';例外
我试图逐行阅读C# 读取文本文件返回';System.NotSupportedException';例外,c#,reader,C#,Reader,我试图逐行阅读文本文件: 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); whil
文本文件:
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中
其他信息:不支持给定路径的格式
我正在使用windows10
有什么建议会导致这个错误吗?(文件在此路径中存在)问题是字符串中有一个不可见的字符。我不知道他们是如何做到这一点的,我猜源代码是通过诸如Word之类的程序实现的,该程序在您不知情的情况下修改了文本。或者你从某个地方复制粘贴了它,而某个地方有一个看不见的字符
至于字符,我首先复制字符串(如果我只是逐字输入字符串,那么它就没有不可见字符,必须从文本中复制),然后删除引号之间的所有内容,然后使用位转换器公开IDE显示为不可见字符的实际字节:
Console.WriteLine(位转换器.ToString(Encoding.UTF8.GetBytes)(@)")));代码>
给出:
E2-80-AA
也就是说。请注意,@““.Length
在此处返回1
,因为1个不可见字符
我手工输入的字符串(而不是从字符串中复制)没有不可见的字符:Console.WriteLine(BitConverter.ToString(Encoding.UTF8.GetBytes(@“”));
,只返回一个字符串。长度为0的空字符串
解决方法是删除整个字符串(包括“
”),然后自己键入,或者只突出显示引号之间的可见字符,然后将它们复制/粘贴到新字符串中。这里有一个固定字符串供您使用:@“D:\links.txt”
,您可以复制并粘贴该字符串,您的问题将得到解决。是“static”修饰符在声明“links”时甚至有效?可能是您无意中在其中有一个零长度字符。请检查此答案:@Tophandour good catch,您可以复制并粘贴他的文本,并且确实有一个隐藏字符显示在@”D:\links.txt“.Length
,删除到@”“.Length
给出了1
它应该为零的时间。再次查找如何转换为位以查看字符的实际内容..我不理解这一点,您能详细说明吗?旁注:Console.Write(File.ReadAllText(links));
代替循环和读卡器是一种较短的实现方式。我如何做到这一点?@DanaYeger查看我的编辑,了解有关如何修复字符串的一些选项。我需要放这行?Console.WriteLine(BitConverter.ToString(Encoding.UTF8.GetBytes)(@)DanaYeger不,我在解释那部分的错误…你需要打开代码,高亮显示string links=@“D:\links.txt”
行上的所有文本,然后点击键盘上的“Backspace”删除该文本,然后使用键盘键入:string links=@“D:\links.txt”“;
。这将解决您的问题。检查不可见字符的另一种方法是在十六进制编辑器中打开代码。在Visual Studio(2019)中,右键单击解决方案资源管理器中的文件
,选择使用打开…
,然后选择二进制编辑器
。对于打开的解决方案之外的文件,请打开文件
→ <代码>打开
,选择文件,单击打开
按钮上的箭头,然后选择用打开…
,然后选择二进制编辑器
。