在C#/.NET中合并路径和文件名的最佳方法是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (66)

将路径与文件名结合的最佳方式是什么?

也就是说,给定c:\foobar.txt,我想c:\foo\bar.txt

鉴于c:\foo..\bar.txt,我想要一个错误或c:\foo\bar.txt(所以我不能Path.Combine()直接使用)。同样对于c:\foobar/baz.txt,我想要一个错误或c:\foo\baz.txt(不c:\foo\bar\baz.txt)。

我意识到,我可以检查文件名不包含'\'或'/',但这足够吗?如果不是,那么正确的支票是什么?

提问于
用户回答回答于

如果你想“坏”文件名产生一个错误:

if (Path.GetFileName(fileName) != fileName)
{
    throw new Exception("'fileName' is invalid!");
}
string combined = Path.Combine(dir, fileName);

或者,如果你只是想默默纠正“坏”文件名而不抛出异常:

string combined = Path.Combine(dir, Path.GetFileName(fileName));
用户回答回答于

你可以使用:

Path.Combine(folder, Path.GetFileName(fileName))

或者,跳过\(未测试,也许Path.GetFileName会自动处理它)

Path.Combine(folder, Path.GetFileName(fileName.Replace("/","\\")))

扫码关注云+社区