如何在UNC路径中检查文件是否存在?

时间:2012-08-21 15:17:15

标签: c#

我试图使用c#中的File.Exist()函数检查UNC路径中是否存在该文件,但即使该文件存在,它也仅返回false。

以下是示例代码

outPath="\\DevSrv\\outPath\\result.txt";
if(File.Exists(outPath))
{
 .....
}

上述代码始终失败,路径“\ DevSrv \ outPath \ result.txt”有效。我可以使用Windows资源管理器访问路径。


抱歉,我在创建这篇文章时错过了“\”

3 个答案:

答案 0 :(得分:4)

在字符串前使用@以避免必须转义斜杠

outPath=@"\\DevSrv\outPath\result.txt";
if(File.Exists(outPath))
{
  .....
}

答案 1 :(得分:3)

你没有逃避斜线,试试:

outPath="\\\\DevSrv\\outPath\\result.txt";
if(File.Exists(outPath))
{
    .....
}

答案 2 :(得分:2)

使用带反斜杠的字符串时,需要考虑转义序列。 此链接将为您提供有关转义序列的详细视图。 http://blogs.msdn.com/b/csharpfaq/archive/2004/03/12/what-character-escape-sequences-are-available.aspx

从链接引用:

C#定义了以下字符转义序列:

  • \' - 单引号,字符文字需要
  • \“ - 双引号,字符串文字需要
  • \\ - 反斜杠
  • \ 0 - Unicode字符0
  • \ a - 提醒(字符7)
  • \ b - 退格(字符8)
  • \ f - 表格Feed(字符12)
  • \ n - 新行(字符10)
  • \ r - 回车(字符13)
  • \ t - 水平制表符(字符9)
  • \ v - 垂直引号(字符11)
  • \ uxxxx - 十六进制值为xxxx
  • 的字符的Unicode转义序列
  • \ xn [n] [n] [n] - 具有十六进制值nnnn(可变长度版本\ uxxxx)的字符的Unicode转义序列
  • \ Uxxxxxxxx - 十六进制值为xxxxxxxx的字符的Unicode转义序列(用于生成代理)

其中,\ a,\ f,\ v,\ x和\ U在我的经验中很少使用。

所以在你的例子中。您可以为字符串使用以下选项。

outPath=@"\\DevSrv\outPath\result.txt";
//Or
outPath="\\\\DevSrv\\outPath\\result.txt";