2010-02-09 4 views

ответ

5

Википедия содержит полезные ссылки the reserved characters for different filesystems. Ни NTFS, ни POSIX не будут принимать символы нисходящей или косой черты (/) в именах файлов. Символ косой черты, очевидно, не является хорошим разделителем, поэтому, возможно, вы можете использовать null.

Конечно, нуль не подходит для всех ситуаций (например, обычно это не отображается при печати), и в этом случае вам может понадобиться какой-то escaping scheme.

Java, который предназначен для работы на разных платформах, даже не пытается найти общий разделитель путей. Вместо этого каждая платформа имеет свой собственный характер, доступный через API.

2

Технически Unix разрешает любому персонажу в папке/имени файла, за исключением /, который будет интерпретироваться как часть пути. Windows поддерживает только печатные символы и некоторые специальные символы, за исключением \/: * ? " < > |.

+0

Итак, для Unix нет способа присоединиться к нескольким путям в одной строке? – user269354

+1

@ user269354 - Возможно, вы можете использовать самодельный сепаратор, например:/home/user/tiutalk/_____ SEPARATOOOOORRR _____/var/www/_____ SEPARATOOOOORRR _____/bin/dump/ –

+0

или строка типа "# p # p ... # p # p ", где # - количество символов в пути, а p - путь – user269354

-1

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

27

что относительно разделителя для переменной среды PATH? ; для окон и : для linux.

4

Разделительный являются платформо-зависимый:

Для окон, это «\» и для UNIX это «/».

+1

Вы говорить о разделителях каталогов, а не разделителей путей. Разделители путей - это символы (точки с запятой в Windows, двоеточия в Unix), которые разделяют отдельные элементы значения, представляющего несколько путей. – Alan

Смежные вопросы