【问题标题】:The given path format not supported error when reading the file in C#在 C# 中读取文件时,给定的路径格式不支持错误
【发布时间】:2019-03-15 11:34:44
【问题描述】:

我正在尝试在 C# 中读取 txt 文件,但出现错误

不支持给定的路径

我在申请中做了很多时间。但我不知道是什么问题。这是我的代码:

 var filePath = @"‪E:\P1.txt";

 string[] lines = System.IO.File.ReadAllLines(filePath);

不支持路径抛出异常。有什么问题?

【问题讨论】:

  • 如果我复制粘贴你的代码,它会给我同样的错误,如果我给自己写完全相同的字符串,它可以工作。奇怪的。尝试重写你的 filePath 字符串?
  • 检查文件名的长度 - 看起来应该是 9 - filename.Length = 10 - 所以那里有一个不显示的字符。

标签: c# string


【解决方案1】:

让我们看看(打印出stringdump):

var filePath = @"‪E:\P1.txt";

Console.Write(string.Join(Environment.NewLine, 
                          filePath.Select(c => $"'{c}' : 0x{(int)c:x4}")));

结果:

'‪' : 0x202a    <- LEFT-TO-RIGHT EMBEDDING
'E' : 0x0045
':' : 0x003a
'\' : 0x005c
'P' : 0x0050
'1' : 0x0031
'.' : 0x002e
't' : 0x0074
'x' : 0x0078
't' : 0x0074

你能在字符串的开头看到不可见的0x202a(从左到右嵌入)符号吗?

https://www.fileformat.info/info/unicode/char/202a/index.htm

这个符号使路径无效

【讨论】:

  • 我现在该怎么办?
  • @Umer:你必须删除隐形符号。如果路径是硬编码的,那么您可以尝试重新输入它(至少"E:frafment)
  • 重新输入解决了这个问题。我已经多次复制文件路径,但这是第一次发生在我身上。感谢您的回答。
【解决方案2】:

如下所示,您的文件路径包含不可显示的Left-to-Right Embedding (LRE) Unicode 字符。

"\u202AE:\P1.txt"

如果您只是删除该行并重新编写路径,您的问题很可能会得到解决。

【讨论】:

    猜你喜欢
    • 2017-06-26
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    相关资源
    最近更新 更多