Учитывая такой путь к файлу:
Path filePath; // "/Users/me/Desktop/archive.zip"
Я хочу, чтобы функция преобразовала этот путь к файлу в путь к каталогу, удалив его расширение, трактуя путь к файлу как путь к каталогу. Например. такие как:
Path dirPath = asDirectoryPath(filePath); // "/Users/me/Desktop/archive"
Что я пробовал?
Ну, у меня есть решение, которое, на мой взгляд, довольно уродливо:
private Path asDirectoryPath(Path filePath)
{
return Paths.get(path.toString().substring(0, path.toString().lastIndexOf('.')));
}
Почему уродливый? Потому что я вынужден выполнить путь к строковому преобразованию и искать «.» символ, предполагая, что следующие символы являются расширением файла. Эта функция должна быть переносимой и работать как в Windows, так и в Unix системах. Есть ли более правильные решения? Спасибо.