1

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

以下是示例代码

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

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


抱歉,我在创建此帖子时错过了“\”

4

3 回答 3

4

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

outPath=@"\\DevSrv\outPath\result.txt";
if(File.Exists(outPath))
{
  .....
}
于 2012-08-21T15:19:32.337 回答
3

您没有逃避斜线,请尝试:

outPath="\\\\DevSrv\\outPath\\result.txt";
if(File.Exists(outPath))
{
    .....
}
于 2012-08-21T15:18:51.957 回答
2

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

引用链接:

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

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

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

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

outPath=@"\\DevSrv\outPath\result.txt";
//Or
outPath="\\\\DevSrv\\outPath\\result.txt";
于 2012-08-21T15:25:37.560 回答