C# 如何确保文件路径有效?

C# 如何确保文件路径有效?,c#,validation,filenames,C#,Validation,Filenames,我希望确保给定的文件名是有效的,即使它意味着替换或删除一些字符。我目前正在这样做: Path.GetInvalidFileNameChars ().ToList ().ForEach (x => path.Replace (x, '-')); 但据我所知。有没有比执行上述预检查然后实际尝试捕获打开文件更好的方法 编辑:发现上面代码中的错误;) 次要补充:我更喜欢保持文件名尽可能可读,因此应该避免使用某种BASE64。我们过去使用的一种方法是用一些特殊字符(例如连字符)替换不在某个特定波段

我希望确保给定的文件名是有效的,即使它意味着替换或删除一些字符。我目前正在这样做:

Path.GetInvalidFileNameChars ().ToList ().ForEach (x => path.Replace (x, '-'));
但据我所知。有没有比执行上述预检查然后实际尝试捕获打开文件更好的方法

编辑:发现上面代码中的错误;)


次要补充:我更喜欢保持文件名尽可能可读,因此应该避免使用某种BASE64。

我们过去使用的一种方法是用一些特殊字符(例如连字符)替换不在某个特定波段(字母数字和连字符/下划线)中的所有字符。这是假设大多数文件系统都允许使用此波段。但对于一些未来可能不允许说数字的FS来说,这并不安全。

核心,但好主意-这似乎是一种非常安全的方式。是的,这是一种安全的方式。我们这样做是因为我们试图通过存储在临时目录中来保存上传的文件名,当文件从mac机器上传时,我们遇到了问题。当然,现在我们使用生成的文件名存储在文件存储中,实际名称存储在DB中。