使用正确格式时格式不受支持

时间:2012-09-25 07:38:27

标签: c# file format

我得到一个“NotSupportedExeption未被用户代码处理 - 不支持指定的路径格式”错误,即使我使用字符串重新加入。

string path = folder + "/" + filename;

fileByte = File.ReadAllBytes(path); // error here

任何想法是什么问题?

将代码编辑到此

string path = Path.Combine(folder, filename);

fileByte = File.ReadAllBytes(path);

路径是“F:\ Web \ Opgaver \ Skirmer \ Hjemmesiden \ BETA \ Skirmer 17-04-2012 \ Skirmer 17-04-2012 \ Billeder \ Galleri \ F:\ Web \ Opgaver \ Skirmer \ Hjemmesiden \ BETA \ Skirmer 17-04-2012 \ Skirmer 17-04-2012 \ Billeder \ Galleri \ 2011 \ Vingsted \ DSC_0001.JPG“

错误仍然存​​在。我看到的是ReadAllBytes重新显示一个显示路径的字符串,但我仍然显示错误

5 个答案:

答案 0 :(得分:2)

您不应在路径中使用/,因为斜杠是Windows中的无效字符。请改用Path.Combine来创建它:

string path = Path.Combine(folder, filename);

答案 1 :(得分:1)

我认为你想使用反斜杠,或者更确切地说是属性Path.DirectorySeparatorChar,它返回正确的分隔符,而不管文件系统如何:

string path = folder + Path.DirectorySeparatorChar.ToString() + filename;

或者您可以使用Path.Combine方法:

string path = Path.Combine(folder, filename);

答案 2 :(得分:0)

path变量的确切值是多少? 此外,您应该使用Path.Combine将路径部分连接到完整路径。

正如File.ReadAllBytes所述的文档:

 NotSupportedException  - path is in an invalid format. 

答案 3 :(得分:0)

您的路径格式不正确:

NotSupportedException  path is in an invalid format. 

MSDN: system.io.file.readallbytes

答案 4 :(得分:0)

如果您在编辑过的问题中发布的路径确实是您尝试阅读的路径,那么您获得异常的原因是因为路径中有两个冒号。驱动器号重复两次(F:\...F:\...)。

您最终使用该路径的原因完全取决于您对folder的调用中filenamePath.Combine()的内容。 folderfilename两者都不可能以完整路径开头,因为Path.Combine()将返回filename作为该情况下的组合路径。在您致电folder之前,您的NotSupportedExeption变量很可能已包含两个基本路径副本,其中包含两个驱动器号,因此有两个冒号,从而导致Path.Combine()