我想确保给定的文件名有效,即使这意味着替换或删除某些字符。我现在正在这样做:
Path.GetInvalidFileNameChars ().ToList ().ForEach (x => path.Replace (x, '-'));
但据我所知,this is not guaranteed to yield a valid filename。有没有比执行上述预检更好的方法,然后实际尝试捕捉打开文件?
编辑:发现上述代码中的错误;)
轻微添加:我希望尽可能保持文件名的可读性,因此应避免使用某种BASE64。
答案 0 :(得分:3)
我们过去使用过的一种方法是用一些特殊字符(如连字符)替换不在某些特定波段(字母数字和连字符/下划线)中的所有字符。这假设大多数文件系统允许此频段。但是,对于一些可能不允许说数字的未来FS来说,这是不安全的。