2016-08-16 2 views
4

Как в nodejs я могу проверить, является ли данная строка допустимым путем файловой системы, не проверяя файловую систему.Nodejs проверяет, является ли данная строка допустимым пути файловой системы, фактически не проверяя файловую систему

Я использую телеграмму bot nodejs api, и при отправке файлов он проверяет, существует ли файл или нет. Но во второй раз я использую telegram file id, который я получил от загрузки предварительного просмотра, а не фактический путь к файлу для отправки файла, поэтому в этом случае я хочу проверить, является ли строка фактическим файловым путем, а не идентификатором файла (exp: AgADBAADuqcxG-ysuwhqkRaOdVnJI0CZXhkABL1NBSyVlK3gduoAAgI), прежде чем проверять, существует ли файл, чтобы повысить производительность и избежать ненужного доступа к файловой системе.

ответ

4

1.

Вы можете проверить, если строка равна path.basename(string). Тогда он не содержит разделителей путей и определенно не является файлом в другом каталоге. Это funtion не затрагивает файловую систему и проверяет только строку для разделителя каталогов для конкретных каталогов и, следовательно, соответствует вашим потребностям в производительности.

string === path.basename(string) 

2.

Еще одна идея: если идентификаторы следуют определенному формату, а затем создать регулярное выражение для формата и проверить каждую строку на матч и действовать соответствующим образом.

/identifierregex/.test(string) 
+0

я прыгал для общего пути, но оба из них будет работать так же, TNX – Exlord

+0

стрелять, я забыл о существовании 'path.sep', вы можете проверить, если ваша строка содержит этот символ, то вероятно, это имя файла – pspi

+0

@pspi '.' или' ..' - также путь, поэтому первый подход не удался. –