Я получаю странное поведение при попытке выполнить конвертацию между файлами и URL-адресами, особенно когда в имени файла / пути есть пробелы.Есть ли какой-нибудь безопасный способ преобразования между ними?
В моей программе есть функция сохранения файла, при которой фактическая операция «Сохранить» делегируется внешней библиотеке, для которой в качестве параметра требуется URL-адрес.Однако я также хочу, чтобы пользователь мог выбрать, какой файл сохранить.Проблема заключается в том, что при преобразовании между файлом и URL-адресом (с использованием URI) пробелы отображаются как «% 20» и приводят к ошибкам в различных операциях.Рассмотрим следующий код:
//...user has selected file
File userFile = myFileChooser.getSelectedFile();
URL userURL = userFile.toURI().toURL();
System.out.println(userFile.getPath());
System.out.println(userURL);
File myFile = new File(userURL.getFile());
System.out.println(myFile.equals(userFile);
Это вернет false (из-за символов "% 20") и вызовет значительные проблемы в моей программе, поскольку файлы и URL-адреса передаются и часто приходится выполнять операции.выполняется с ними (например, получение родительских / подкаталогов).Есть ли способ сделать обработку файлов / URL безопасными для путей с пробелами?
PS Все работает нормально, если в моих путях нет пробелов (и пути выглядят одинаковыми), но это ограничение пользователя, я не могунавязываю.