Налагает ли Java какие-либо дополнительные ограничения на имена файлов, кроме базовой операционной системы? - PullRequest
5 голосов
/ 15 сентября 2008

Налагает ли Java какие-либо дополнительные ограничения самостоятельно? Windows (до Vista) не позволяет именам включать

\ / < > ? * :

Я знаю, КАК проверять имена (регулярное выражение).

Мне нужно проверить имена файлов, введенные пользователями.

Мое приложение не должно запускаться на какой-либо другой платформе, хотя, конечно, я бы предпочел быть независимым от платформы!

Ответы [ 3 ]

2 голосов
/ 15 сентября 2008

Нет, вы можете экранировать любой символ, который Java не разрешает в литералах String, но файловая система позволяет.

Также, если вы пытаетесь портировать приложение Windows на Mac или Unix, лучше всего использовать:

File.separator

Чтобы определить правильный разделитель файлов для использования на каждой платформе.

0 голосов
/ 15 сентября 2008

Java поддерживает любую строку, которая может быть выражена в Юникоде (с учетом смехотворно большой максимальной длины, Integer.MAX_VALUE), а имена файлов - это просто еще один вид строки.

Конечно, это означает, что вы можете попытаться сослаться на файл, используя имя, которое не поддерживается базовой операционной системой. Если вы сделаете это, вы получите какое-то исключение IOException при попытке использовать ссылку на файл ...

0 голосов
/ 15 сентября 2008

При создании нового файла введенные аргументы будут нормализованы реализацией конкретной платформы класса java.io.FileSystem. Я не знаю особых ограничений для Java.

и да, всегда используйте File.separator.

...