Я создаю класс для хранения имени файла. Для этого мне нужно точно знать, какие символы недопустимы и какие символы недопустимы в качестве начальных / конечных символов .
Проводник Windows автоматически обрезает начальные и конечные пробельные символы при именовании файла, поэтому мне нужно обрезать эти же символы при создании экземпляра имени файла.
Я думал об использовании string.Trim (), но было бы наивно предполагать, что набор символов по умолчанию, который он усекает, точно совпадает с недопустимыми символами начального / конечного имени файла в ОС.
Документация для string.Trim () говорит, что по умолчанию обрезает следующие символы:
U + 0009, U + 000A, U + 000B, U + 000C, U + 000D, U + 0020, U + 0085, U + 00A0, U + 1680, U + 2000, U + 2001, U + 2002, U + 2003, U + 2004, U + 2005, U + 2006, U + 2007, U + 2008, U + 2009, U + 200A, U + 200B, U + 2028, U + 2029, U + 3000, U + FEFF
К сожалению, некоторые из вышеперечисленных символов НЕ являются недопустимыми в файле, поскольку их нет в наборе символов, возвращаемом System.IO.Path.GetInvalidFileNameChars.
Могу ли я затем исправить эту строку. Возможно, триммер () может удалить допустимые начальные / конечные символы из имени файла, что приведет к повреждению имени файла?
Что такое недопустимые начальные / конечные символы для имени файла в ОС Windows Vista? Я понимаю, что они не обязательно совпадают с самой файловой системой, поскольку ОС может работать на другом файле системы.