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
答案 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());