Проблема
В моем приложении Java у меня есть код
Paths.get(v_DirBufferdata).resolve(Paths.get(v_DirIndata).relativize(Paths.get(c_FileIndataLocation))).toString();
с
v_DirBufferdata
, равным "file://workflow/../buffer/"
v_DirIndata
будет "/tmp/C4243/indata"
c_FileIndataLocation
будет "/tmp/C4243/indata/one_doc/pv.pdf"
, и я хотел бы получить
"file://workflow/../buffer/one_doc/pv.pdf"
.
однако я получаю
"file:/workflow/../buffer/one_doc/pv.pdf"
.
Regex-Solution?
Одной простой идеей получить обратную косую черту протокола является использование регулярных выражений.Тем не менее, я хочу убедиться, что обрабатывается только ошибка протокола - ни в коем случае не папка с именем «file:».
В частности, «file: /» следует заменить на «file: //»,но если "file: //" уже существует, я не хочу получать "file: ///".Кроме того, «file: /» следует заменять только в том случае, если он находится в начале строки.Пока у меня есть:
"file:/".replaceFirst("^file:/[^/]", "file://")
Очевидно, это еще не работает.Как мне это сделать?
Альтернативное решение
Если есть другое решение, которое не требует взлома регулярных выражений, я тоже открыт для него.