2013-03-29 2 views
0

Мне нужно объединить несколько абсолютных путей файла в одной строке. Но если я использую символ, который может быть частью имени файла или пути, строка будет запутана. Какой сепаратор можно использовать?Объединить абсолютные пути файла в строке

Теперь я использую File.pathSeparator и для Windows 7 это ';'. Но этот символ может быть частью имени файла.

SO question

Semicolons are legal in NTFS file paths.

+0

Использование | (pipe) –

+2

Почему вы не используете коллекцию в первую очередь? –

+0

Теперь я думаю о символе трубы, но я не уверен в других файловых системах. И все еще интересует, пока File.pathSeparator вернул ';' но путь может содержать его. –

ответ

2

Вы можете использовать File.pathSeparator:

Путь-разделитель зависит от системы, представленной в виде строки для удобства. Эта строка содержит один символ, а именно pathSeparatorChar:

Системный символ-разделитель путей. Это поле , инициализированное, чтобы содержать первый символ значения системы свойство path.separator. Этот символ используется для разделения имен файлов в последовательности файлов, указанных как список путей. В системах UNIX этот символ равен::; в системах Microsoft Windows это «;».

+0

Я использую его сейчас. Но имена файлов в Windows 7, например, могут иметь ';'. –

+1

К сожалению нет, в то время как разделитель путей используется для разделения путей, нет ничего, что помешало бы вам использовать двоеточие в имени файла в Unix. – Joni

+0

@YegoshinMaxim Вы можете проверить, существует ли путь до ';', если нет, то вы знаете, что это часть имени файла. BTW, я работаю с ним в течение длительного времени и никогда не сталкивался с файлом с именем ';' от его имени. – Maroun

0

ASCII-NUL символ \0 не может быть частью имени пути на Windows, или Unix (включая Mac), так что вы, вероятно, может использовать это в качестве разделителя.

Символ NUL не может использоваться в пути к файлу, так как это символ символа строки в C, а API для этих операционных систем определяются как библиотеки C, которые используют строки для представления путей к файлам.

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