路径中的字符无效

时间:2014-12-23 20:45:14

标签: c#

if (System.IO.Path.GetExtension(message).ToLower() == "mp4")

上面的语句引发了一个参数异常,令我感到困惑的是错误"路径中的无效字符"在消息等于这个的上下文中似乎是错误的:

string message = @"D:\Cases\Case 0\Records\Videos\VID_2014_1222163200_0.MP4"

我似乎无法找到无效的角色!

BitConverter.ToString(Encoding.Unicode.GetBytes(message))

将返回此:

12/23 / 2014-4:06:14 PM:错误:44-00-3A-00-5C-00-43-00-61-00-73-00-65-00-73-00- 5C-00-43-00-61-00-73-00-65-00-20-00-30-00-5C-00-52-00-65-00-63-00-6F-00-72- 00-64-00-73-00-5C-00-56-00-69-00-64-00-65-00-6F-00-73-00-5C-00-56-00-49-00- 44-00-5F-00-32-00-30-00-31-00-34-00-5F-00-31-00-32-00-32-00-32-00-31-00-36- 00-33-00-32-00-30-00-30-00-5F-00-30-00-2E-00-4D-00-50-00-34-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-0 0-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00- 00-00-00-00-00-00-00-00-00-00-00-00-00

2 个答案:

答案 0 :(得分:1)

从您的问题中复制的代码没有异常问题。

有时字符串文字中难以识别的无效字符来自于从Web浏览器到代码等内容的剪切和粘贴。如果我是你,我会手动重写文字。

抛出此异常的函数有一个如下所示的测试:

if (c == '\"' || c == '<' || c == '>' || c == '|' || c < 32)

知道这可能会让你知道错误的原因。

更新

根据评论显示原始代码示例未反映应用程序,我建议您添加.Trim()来电:

if (Path.GetExtension(message.Trim()).Equals(".mp4",
                           StringComparison.OrdinalIgnoreCase))

(我还修复了.mp4字符串以及你的比较。)

答案 1 :(得分:0)

使用这一行代码,它应该返回无效字符的索引号(从0开始)。如果它返回任何< 0,则路径中没有无效字符。

int ndx = message.IndexOfAny(System.IO.Path.GetInvalidPathChars());
相关问题